seven_languages_in_seven_weeks/scala/day3.scala
2023-07-11 13:19:24 +02:00

52 lines
1.1 KiB
Scala

// 2023 syntax of scala is too different to reproduce this example
import scala.io._
import scala.actors._
import Actor._
object PageLoader {
def getPageSize(url: String) = Source.fromURL(url).mkString.length
def getCountOfLinks(url: String): int = {
val raw = Source.fromURL(url).mkString
val count = "<a>".r.findAllIn(raw).length
return count
}
}
val urls = List("https://www.amazon.com/",
"https://www.twitter.com/",
"https://www.google.com/",
"https://www.cnn.com/")
def timeMethod(method: () => Unit) = {
val start = System.nanoTime
method()
val end = System.nanoTime
println("Method took " + (end - start)/1000000000.0 + " seconds.")
}
def getPageSizeSequentially() = {
for(url <- urls) {
println("Size for " + url + ": " + PageLoader.getPageSize(url))
}
}
def getPageSizeConcurrrently() = {
def caller = self
for(url <- urls) {
actor { caller ! (url, PageLoader.getPageSize(url)) }
}
for(i <- 1 to urls.size) {
receive {
case (url, size) =>
println("Size for " + url + ": " + size)
}
}
}