scalacl plugin kullanmayla ilgili herhangi bir olumsuzluk var mı?Dizi performansı ile scala işlemleri (scalacl eklentisi)
Projemde scala kullanmayı planlıyorum. Yürütme süresini görmek için scala'da biraz kod yazdım.
eklentisi olmadan
(1 to 1000000).map(1 + _).sum
1. Böyle bir şey için derlendi: yaklaşık 375 ms scalacl eklenti sayesinde
2.
BoxesRunTime.unboxToInt(((TraversableOnce)Predef..MODULE$.intWrapper(1).to(1000000).map(new MyScala..anonfun.1(), IndexedSeq..MODULE$.canBuildFrom())).sum(Numeric.IntIsIntegral..MODULE$));
ve çalıştırmak
int i = 1;
int j = 1000000;
int k = j;
int m = i;
for (VectorBuilder localVectorBuilder = new VectorBuilder(); m <= k;) {
int n = m;
localVectorBuilder.$plus$eq(BoxesRunTime.boxToInteger(1 + n));
m += 1;
}
int a = BoxesRunTime.unboxToInt(localVectorBuilder.result().sum(Numeric.IntIsIntegral..MODULE$));
259 ms
Aklıma
% 30 iyileştirme çok fazla değil. Şimdi kodlarımın bir bölümünü optimize ettim, şimdi dizileri kullanan ve döngüler 100x hız için. Deyimsel Scala gerçekten yavaş olabilir. Örneğin, bokstan kurtulursanız, daha etkileyici bir şey elde edersiniz. – ziggystar
Btw, 'Range # sum' şimdi gövde içinde en iyi duruma getirildi ve sabit zamanda (O) n 'yerine lineer' O (n) 'olarak çalışıyor. Algoritmik gelişmeler çoğu zaman tercih edilir. – soc