मुझे यकीन नहीं है कि यह स्टैक ओवरफ्लो या क्लोजर Google समूह में है या नहीं। लेकिन समूह numeric improvements for Clojure 1.2 पर चर्चा करने में व्यस्त प्रतीत होता है, इसलिए मैं यहां कोशिश करूंगा:क्लोजर संख्या क्रंचिंग प्रदर्शन
http://shootout.alioth.debian.org/ में विभिन्न भाषाओं के लिए कई प्रदर्शन मानक हैं।
मैंने देखा कि क्लोजर गुम था, इसलिए मैंने n-body problem का क्लोजर संस्करण बनाया।
सबसे तेजी से कोड मैं उत्पादन करने के लिए found here हो सकता है कर रहा था, और बेंचमार्किंग यह कह जा सकता है कि Clojure क्रंचिंग संख्या के लिए
- कारक है लगता है ~ 10 जल्दी से अजगर/रूबी/पर्ल
- कारक ~ 4 धीमी गति से सी/जावा/Scala/ऐडा OCaml, Erlang के साथ बराबर के लगभग
- और जाओ
मैं प्रदर्शन के उस स्तर काफी खुश हूं।
Clojure गुरु को मेरा प्रश्न है
- , वहाँ स्पष्ट सुधार मैं चूक गए हैं या तो गति के मामले में या कोड संक्षिप्तता या पठनीयता के संदर्भ (गति का त्याग किए बिना) में?
- क्या आप इसे एक तरफ क्लोजर प्रदर्शन बनाम पायथन/रूबी/पर्ल के प्रतिनिधि और दूसरे पर जावा/सी के प्रतिनिधि मानते हैं?
अद्यतन
अधिक Clojure 1.1 शूटआउट here के लिए बेंचमार्क कार्यक्रम, एन-शरीर समस्या भी शामिल है।
मुझे कल्पना करना है कि जेवीएम यहां एक बड़ा हिस्सा खेलेंगे। आप किस जेवीएम का उपयोग कर रहे हैं? क्या आप शूटआउट के समान ही उपयोग कर रहे हैं? –
जावा 1.6.0, मानक जावा जो ओएस एक्स 10.6 के साथ जहाजों। यह लगभग एक ही JVM है (मुझे: 1.6.0_20, शूटआउट: 1.6.0_18) लेकिन शूटआउट से अलग कंप्यूटर। मैं स्थानीय रूप से क्लोजर और शूटआउट जावा कार्यान्वयन दोनों चला गया। मैंने बेसलाइन के रूप में जावा का उपयोग करके और शूटआउट परिणामों के अनुसार स्केलिंग के सापेक्ष प्रदर्शन का अनुमान लगाया। –
आपका कोड बहुत अच्छा लगता है। 1.2 में आदिम सुधार के साथ मैं आपको जावा समय के बहुत करीब पहुंचने में सक्षम होने की उम्मीद करता हूं। क्या आपने इसे प्रोफाइलर के माध्यम से चलाने की कोशिश की है? मेरा संदेह यह है कि कहीं कुछ मुक्केबाजी या फ़ंक्शन कॉल ओवरहेड जोड़ रहा है जो आपको चोट पहुंचा रहा है। – mikera