diff --git a/scala/day3.scala b/scala/day3.scala new file mode 100644 index 0000000..6b07520 --- /dev/null +++ b/scala/day3.scala @@ -0,0 +1,41 @@ +import scala.io._ +import scala.actors._ +import Actor._ + +object PageLoader { + def getPageSize(url: String) = Source.fromURL(url).mkString.length +} + +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) + } + } +}