Scala第三天作业
2015-09-24 15:27
281 查看
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 }
相关文章推荐
- Android基础入门教程——2.4.10 Spinner(列表选项框)的基本使用
- 八大排序算法的Python实现
- 【20150912】NOIP模拟 题解 & 总结
- 测试NDK
- iOS开发之UI基础--tableView展示斐波那契数列(Fibonacci)
- 搭建基于Mac 的QT IOS开发环境
- VS找不到约束
- 调用WCF错误-There was no endpoint listening
- 网站部署中遇到的问题-编译器错误信息: CS0016
- 我的搜索优化记录(一):中文分词优化IK Analyzer
- 大量的QT控件及示例发放
- JAXB 中的@XmlElementWrapper注解生成问题
- nginx监听非80端口没权限的问题
- [Git] fatal: protocol error: bad pack header
- 爬虫应用-从offer100比赛中采集信息
- oracle ORA-01017 用户无法通过PL-SQL登录,Toad可以登录
- 转 vc 中 定义全局变量
- 范数与距离的关系
- UVa489——Hangman Judge
- fopen: failed to open stream: Permission de