有沒有使用scalacl plugin的缺點?具有數組性能的Scala操作(scalacl插件)
我打算在我的項目中使用scala。 我已經在scala中編寫了一段代碼來查看它的執行時間。
(1 to 1000000).map(1 + _).sum
1.無插件
被編譯成這樣的:
BoxesRunTime.unboxToInt(((TraversableOnce)Predef..MODULE$.intWrapper(1).to(1000000).map(new MyScala..anonfun.1(), IndexedSeq..MODULE$.canBuildFrom())).sum(Numeric.IntIsIntegral..MODULE$));
和運行在大約375毫秒
2. scalacl插件
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毫秒
提高30%並不多。我優化了我的代碼的一部分,現在使用數組和while循環來實現100倍的加速。習慣性Scala可能非常慢。例如,如果你擺脫拳擊,那麼你會得到更令人印象深刻的東西。 – ziggystar 2011-12-13 22:54:30