Scala第三天作业

来源:互联网 发布:百度高级优化师 编辑:程序博客网 时间:2024/05/21 04:21

1.修改sizer程序,增加一个计算页面上链接总和的消息。

import scala.io._import scala.actors._import Actor._ object PageLoader {    def getPageSize(url: String) = Source.fromURL(url).mkString.length    def getLinkNumber(url: String) = {        val reg = """<a.{0,}\s{1,}href=""".r        reg.findAllIn(Source.fromURL(url).mkString).size    }}val urls = List("https://github.com/",  "http://spring.io/",  "http://tomcat.apache.org/index.html") 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))    }    for(url <- urls) {        println("Links in " + url + ": " + PageLoader.getLinkNumber(url))    }}def getPageSizeConcurrently() = {    val caller = self    for(url <- urls) {        actor { caller ! ("Size", url, PageLoader.getPageSize(url))}        actor { caller ! ("Number", url, PageLoader.getLinkNumber(url))}    }    for(i <- 1 to (urls.size * 2)) {        receive {            case ("Size", url, size) =>                println("Size for " + url + ": " + size)            case ("Number", url, number) =>                println("Number of " + url + ": " + number)        }    }}println("Sequential run:")timeMethod { getPageSizeSequentially } println("Concurrent run:")timeMethod { getPageSizeConcurrently }

0 0
原创粉丝点击