p*****2 发帖数: 21240 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: peking2 (sinatra), 信区: JobHunting
标 题: 对scala很失望
发信站: BBS 未名空间站 (Mon Jan 21 00:20:00 2013, 美东)
传说性能跟java差不多,结果发现跟ruby差不多,今天做了两题
第一题,ruby死活过不了,scala将将过
第二题,ruby,scala全部超时2000ms, java 600多ms通过
两道题python都可以通过,第二题用时大约1500ms
可见scala性能跟java相差还是很远的,连python也不如,跟ruby八斤八两,强点有限
。白花一天时间学习了,没什么用武之地。
另外请教以下大牛们,以下语言性能如何,应用广泛吗?
Haskell
Ocaml |
g*****g 发帖数: 34805 | 2 Scala 不应该这么慢,比java慢一些,但应该不超过一倍。你写的啥代码?
【在 p*****2 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: peking2 (sinatra), 信区: JobHunting : 标 题: 对scala很失望 : 发信站: BBS 未名空间站 (Mon Jan 21 00:20:00 2013, 美东) : 传说性能跟java差不多,结果发现跟ruby差不多,今天做了两题 : 第一题,ruby死活过不了,scala将将过 : 第二题,ruby,scala全部超时2000ms, java 600多ms通过 : 两道题python都可以通过,第二题用时大约1500ms : 可见scala性能跟java相差还是很远的,连python也不如,跟ruby八斤八两,强点有限 : 。白花一天时间学习了,没什么用武之地。
|
p*****2 发帖数: 21240 | 3
object test {
def main(args: Array[String]): Unit = {
val s=readLine
val a=new Array[Int](s.length())
var i=0
var j=s.length-1
for(k <- 0 to s.length-1)
if(s(k)=='l')
{
a(j)=k+1
j-=1
}
else
{
a(i)=k+1
i+=1
}
a.foreach(println)
}
}
void run() throws Exception
{
Scanner in = new Scanner(System.in);
out = new PrintWriter(System.out);
String s=in.nextLine();
int[] a=new int[s.length()];
int i=0;
int j=s.length()-1;
for(int k=0;k
{
if(s.charAt(k)=='l')
{
a[j]=k+1;
j-=1;
}
else
{
a[i]=k+1;
i+=1;
}
}
for(int x : a)
out.println(x);
out.close();
}
Java Ruby Scala
1 46 15 281
2 46 31 218
26 156 218 515
27 140 234 609
30 140 203 656
31 656 2000 2000
收集了一些数据。Ruby小数据的时候比Java还快。但是数据增大是10倍,10倍的往上涨
。Java差不多4倍往上了,Scala增长跟Java差不多,但是一直比Java慢好几倍
【在 g*****g 的大作中提到】 : Scala 不应该这么慢,比java慢一些,但应该不超过一倍。你写的啥代码?
|
g******w 发帖数: 78 | 4 看看shootout里scala的代码吧
只学一天明显太短了 |
p*****2 发帖数: 21240 | 5
关键是算法跟java是一样的。
【在 g******w 的大作中提到】 : 看看shootout里scala的代码吧 : 只学一天明显太短了
|
p*****2 发帖数: 21240 | 6 这个搞明白为什么了。
a.foreach(println) 这句话慢了。 |
c*********e 发帖数: 16335 | 7 如果要计算时间,把code里面的所有的print语句去掉,这些语句非常的花时间,尤其是
loop里面的print.
很多人喜欢用print来debug,但是最后要计算运行时间的时候,一定要把print()语句给
comment out掉。
【在 p*****2 的大作中提到】 : 这个搞明白为什么了。 : a.foreach(println) 这句话慢了。
|
g******w 发帖数: 78 | 8
都是print "hello world",java和c也不一样。
scala有其独特的写法,不注意的话可能结果天差地远。
Martin Odersky在coursea的公开课可以参考。
【在 p*****2 的大作中提到】 : 这个搞明白为什么了。 : a.foreach(println) 这句话慢了。
|
p*****2 发帖数: 21240 | 9
主要是时间不是我算的。print算时间的。以后得注意一下了。
【在 c*********e 的大作中提到】 : 如果要计算时间,把code里面的所有的print语句去掉,这些语句非常的花时间,尤其是 : loop里面的print. : 很多人喜欢用print来debug,但是最后要计算运行时间的时候,一定要把print()语句给 : comment out掉。
|
p*****2 发帖数: 21240 | 10
好。先学习。感觉还是不错的,可以作为一个小二语言来搞
【在 g******w 的大作中提到】 : : 都是print "hello world",java和c也不一样。 : scala有其独特的写法,不注意的话可能结果天差地远。 : Martin Odersky在coursea的公开课可以参考。
|
L***n 发帖数: 6727 | 11 去掉之后benchmark是什么?
【在 p*****2 的大作中提到】 : 这个搞明白为什么了。 : a.foreach(println) 这句话慢了。
|
g*****g 发帖数: 34805 | 12 这个,写得很不functional呀。
【在 p*****2 的大作中提到】 : : 好。先学习。感觉还是不错的,可以作为一个小二语言来搞
|
p*****2 发帖数: 21240 | 13
是。就是同样的算法跟java好比较呀。
【在 g*****g 的大作中提到】 : 这个,写得很不functional呀。
|
p*****2 发帖数: 21240 | 14
效率跟java差不多了。
【在 L***n 的大作中提到】 : 去掉之后benchmark是什么?
|