我想弄清楚是否有更快的方法从URL使用Scala获取内容.使用Apache IOUtils我能够比Source.fromURLScala 更快地获取内容.以下是两者的代码:
使用Java:
try {
tmp=IOUtils.toString(new URL("http://gizmodo.com"));
tmp=tmp.substring(tmp.indexOf("360\" title=")+12);
tmp=tmp.substring(0,tmp.indexOf("\""));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
使用Scala:
val gizmodoPageLines = Source.fromURL("http://gizmodo.com").getLines.mkString("\n")
val pos=gizmodoPageLines.indexOf("360\" title=")
var tmp=gizmodoPageLines.substring(pos+12)
tmp.substring(0,tmp.indexOf("\""))
Run Code Online (Sandbox Code Playgroud)
在Java中它需要大约:155899 ns
在Scala中:343880 ns
为什么Scala代码这么慢?
因为在你第一次从缓冲区读取时,在你的第二次读取时你会逐行阅读.
Source.getLines不是作为IOUtils或其他任何库的银弹替代品,它旨在逐行读取.您可以在Scala中完美地使用IOUtils.
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |