क्या scalacl plugin का उपयोग करने का कोई भी विपक्ष है?सरणी प्रदर्शन (स्केलैक प्लगइन) के साथ स्कैला ऑपरेशंस
मैं अपनी परियोजना में स्कैला का उपयोग करने की योजना बना रहा हूं। मैंने निष्पादन के समय को देखने के लिए स्कैला में थोड़ा सा कोड लिखा है।
(1 to 1000000).map(1 + _).sum
1. प्लगइन
बिना कुछ इस तरह करने के लिए संकलित किया गया है: 375 के बारे में एमएस
2. scalacl प्लगइन के साथ में
BoxesRunTime.unboxToInt(((TraversableOnce)Predef..MODULE$.intWrapper(1).to(1000000).map(new MyScala..anonfun.1(), IndexedSeq..MODULE$.canBuildFrom())).sum(Numeric.IntIsIntegral..MODULE$));
और चलाने
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% का सुधार ज्यादा नहीं है। मैंने अपने कोड के एक हिस्से को अनुकूलित किया, जो अब 100x स्पीड-अप के लिए सरणी और लूप्स का उपयोग कर रहा है। Idiomatic Scala वास्तव में धीमा हो सकता है। उदाहरण के लिए यदि आप मुक्केबाजी से छुटकारा पा लेते हैं, तो आपको कुछ और प्रभावशाली मिलेगा। – ziggystar
बीटीडब्ल्यू, 'रेंज # योग' अब ट्रंक में अनुकूलित है और रैखिक 'ओ (एन)' के बजाय निरंतर समय 'ओ (एन) 'में चलता है। एल्गोरिदमिक सुधार सबसे अधिक समय के लिए बेहतर हैं। – soc