मेरा मानना है कि अपने प्रश्न का उत्तर स्काला के स्रोत कोड की जांच, निर्धारित करने के लिए क्या व्यवहार आप कार्यों में बनाया गया है कि ArrayBuffer के साथ आते हैं से प्राप्त कर सकते द्वारा पाया जा सकता है: sortWith, sortBy, आदि ..
.. प्रलेखन के शीर्ष पर "Seqlike"
किसी भी तरह:
इन कार्यों विशेषता "SeqLike" को परिभाषित करने से आते हैं (आप ScalaDoc में उस वर्ग के लिए ब्राउज़, और स्रोत के लिए अगले करने के लिए लिंक पर क्लिक करके स्रोत कोड की जांच कर सकते सॉर्टिंग से संबंधित अधिकांश कोड को इस फ़ंक्शन से धक्का दिया जाता है:
def sorted[B >: A](implicit ord: Ordering[B]): Repr = {
val len = this.length
val arr = new ArraySeq[A](len)
var i = 0
for (x <- this.seq) {
arr(i) = x
i += 1
}
java.util.Arrays.sort(arr.array, ord.asInstanceOf[Ordering[Object]])
val b = newBuilder
b.sizeHint(len)
for (x <- arr) b += x
b.result()
}
जो मूल रूप से सरणी की एक प्रति बनाता है और Java.util.Arrays.Sort का उपयोग करके इसे टाइप करता है। तो अगला सवाल बन जाता है, "जावा यहाँ क्या कर रहा है?" मैं उत्सुक था और एपीआई वर्णित था:
कार्यान्वयन नोट: सॉर्टिंग एल्गोरिदम व्लादिमीर यारोस्लावस्की, जॉन बेंटले और जोशुआ ब्लोच द्वारा दोहरी-पिवट क्विक्सॉर्ट है। यह एल्गोरिदम कई डेटा सेटों पर ओ (एन लॉग (एन)) प्रदर्शन प्रदान करता है जो अन्य क्विकॉर्ट्स को वर्गबद्ध प्रदर्शन में गिरावट का कारण बनता है, और आमतौर पर पारंपरिक (एक-पिवट) क्विक्सोर्ट कार्यान्वयन से तेज़ होता है।
तो मुझे लगता है कि मूल जवाब यह है कि स्कैला जावा के अंतर्निहित क्विकॉर्टिंग पर भारी निर्भर करता है, और आप किसी भी सेक फ़ंक्शन (क्रमबद्ध, सॉर्टविथ, सॉर्टबी) का उपयोग कर सकते हैं ताकि सरणी त्वरित कार्यों को बेहतर या बराबर प्रदर्शन किया जा सके। आपको "प्रतिलिपि" चरण में कुछ प्रदर्शन हिट मिल सकती है, लेकिन कक्षाएं केवल पॉइंटर्स हैं (यह ऑब्जेक्ट्स क्लोन नहीं कर रही है) ताकि जब तक आपके पास लाखों आइटम न हों तब तक आप अधिक खो नहीं रहे हैं।
@LalolnDublin: यह ध्वनि बनाता है। मैं स्रोत कोड पर अधिक गहराई से देखने की कोशिश करूंगा। किसी भी संदेह के मामले में, मैं इसे यहां पोस्ट करूंगा। –
यह एक अच्छा सवाल है कि मैंने सोचा है कि स्कैला वास्तव में इन मामलों में क्या कर रहा है ... स्रोत कोड जानकारी और अभ्यास का एक धन है (यह देखते हुए कि वे अंतर्निहित वस्तुओं के आसपास कैसे जाते हैं, आदि) – LaloInDublin