2010-10-19 20 views
5

के साथ कोड अनुकूलन निष्पादन गति को बढ़ाने के लिए, जावा में तुलना में स्कैला की अधिक संरचनाओं का अधिक कुशलता से उपयोग किया जा सकता है? यदि यह संभव है मैं नहीं जानता, लेकिन मेरे संदेह :)स्कैला

धन्यवाद

उत्तर

9

स्केला @specialized एनोटेशन एक वर्ग एक से अधिक संस्करण उत्पन्न कर सकते हैं स्पष्ट करने के लिए, विशिष्ट आदिम प्रकार के साथ परिष्कृत। आप जावा में इसे सब कुछ लिख सकते हैं, लेकिन शायद आप नहीं चाहते हैं।

6

2.9 के रूप में, समांतर संग्रह पुस्तकालय मानक वितरण का हिस्सा बनने के लिए तैयार किया गया है। यह एकाधिक कोरों पर तथाकथित "शर्मनाक समानांतर" समस्याओं के बेहद सरल वितरण की अनुमति देगा। जावा में ऐसा करने से काफी अधिक प्रयास होता है।

एक सामान्य नियम के रूप में, समस्या और कोडिंग तकनीकों के आधार पर, स्कैला बेंचमार्क जावा की तुलना में मामूली धीमी गति से जावा से थोड़ा धीमी गति से होते हैं।

+0

समांतर संग्रह 2.9 के लिए योजनाबद्ध हैं। Http://stackoverflow.com/questions/3900879/what-new-features-will-be-added-to-scala-2-9/ देखें –

6

रॉस के उत्तर पर विस्तार करने के लिए, आप संग्रह के विशिष्ट संस्करणों को उत्पन्न करने के लिए @ विशेषीकृत का उपयोग कर सकते हैं। उदाहरण के लिए, जावा में आप आमतौर पर प्राइमेटिव के संग्रह के लिए fastutil या Apache Primitives का उपयोग करेंगे। स्काला के @specialized आप के लिए इन वेरिएंट पैदा करते हैं और उन्हें इतनी तरह स्वचालित रूप से छिप जाएगा:

class MyLinkedList[@specialized T] (args: T*) { 
    // whatever it does 
} 

उसके अलावा, अभिनेताओं यह आसान समवर्ती अनुप्रयोग लिख सकते हैं। 2.9 में आने वाले समानांतर संग्रह होते हैं, जो समानांतर संग्रह में उच्च-क्रम कार्यों को लागू कर सकते हैं, किसी भी स्थान को तेज़ कर सकते हैं जिसमें आपके पास जावा लूप (गुना, foreach, आदि) के बराबर स्केल होगा। इस पर नट-किरकिरा के लिए this ScalaDays talk देखें।

2

मैं अनुमान लगाता हूं कि परिणामस्वरूप प्रदर्शन समकक्ष जावा निर्माण से अलग कैसे हो सकता है, लेकिन स्कैला closure elimination करता है, जो एक मापनीय अंतर, मॉड्यूलो हॉटस्पॉट चाल बना सकता है।

Iulian's thesis के लिए भी ट्यून किया गया है जो जल्द ही बाहर होना चाहिए और स्कैला अनुकूलन के विषय पर बहुत अधिक जानकारी प्रदान करेगा।