मैं स्कैला के लिए नया हूं और बस Scala By Example पढ़ रहा था। अध्याय 2 में, लेखक के पास क्विक्सोर्ट के 2 अलग-अलग संस्करण हैं।स्कैला प्रदर्शन: अनिवार्य बनाम कार्यात्मक शैली
def sort(xs: Array[Int]) {
def swap(i: Int, j: Int) {
val t = xs(i); xs(i) = xs(j); xs(j) = t
}
def sort1(l: Int, r: Int) {
val pivot = xs((l + r)/2)
var i = l; var j = r
while (i <= j) {
while (xs(i) < pivot) i += 1
while (xs(j) > pivot) j -= 1
if (i <= j) {
swap(i, j)
i += 1
j -= 1
}
}
if (l < j) sort1(l, j)
if (j < r) sort1(i, r)
}
sort1(0, xs.length - 1)
}
एक यह है कार्यात्मक शैली:
def sort(xs: Array[Int]): Array[Int] = {
if (xs.length <= 1) xs
else {
val pivot = xs(xs.length/2)
Array.concat(
sort(xs filter (pivot >)),
xs filter (pivot ==),
sort(xs filter (pivot <)))
}
}
स्पष्ट लाभ कार्यात्मक शैली जरूरी शैली से अधिक है संक्षिप्तता है
एक अनिवार्य शैली है। लेकिन प्रदर्शन के बारे में क्या? चूंकि यह रिकर्सन का उपयोग करता है, क्या हम प्रदर्शन दंड के लिए भुगतान करते हैं जैसे कि हम सी जैसी अन्य अनिवार्य भाषाओं में करते हैं? या, स्कैला एक संकर भाषा है, "स्कैला रास्ता" (कार्यात्मक) को प्राथमिकता दी जाती है, इस प्रकार अधिक कुशल।
नोट: लेखक ने उल्लेख किया है कि कार्यात्मक शैली अधिक स्मृति का उपयोग करती है।
संभावित डुप्लिकेट [क्या स्कैला कार्यात्मक प्रोग्रामिंग पारंपरिक कोडिंग की तुलना में धीमी है?] (Http://stackoverflow.com/questions/2794823/is-scala- कार्यात्मक- प्रोग्रामिंग- स्लोवर- थान-ट्रैडिशनल-कोडिंग) – missingfaktor
"संक्षिप्त" "पठनीय" के समान नहीं है। साक्ष्य: [जे प्रोग्रामिंग भाषा] (http://en.wikipedia.org/wiki/J_ (प्रोग्रामिंग_भाषा)) –
मुझे लगता है कि अब मैं समझता हूं कि स्कैला द्वारा उदाहरण के लेखक समस्या को हल करने के लिए एक और तरीका दिखाने की कोशिश कर रहे हैं बहुत अधिक संक्षिप्त है। संक्षेप में: आप अपने कोड के सभी हिस्सों में जितना संभव हो उतना संक्षेप में प्रोग्राम करते हैं, ताकि आप अधिकतम समानता, उत्पादकता प्राप्त कर सकें। फिर अपना आवेदन चलाएं, और यदि यह बहुत धीमा है, तो इसे प्रोफाइल करें, और बाधा भागों को अनुकूलित करें। – sivabudh