मैं से कोड कॉपी:Clojure यात्रियों उदाहरण कोई महत्वपूर्ण speedup
लेकिन मेरे परिणाम क्या पोस्ट किया गया था से signifiantly भिन्न होते हैं।
(defn vrange [n]
(loop [i 0 v []]
(if (< i n)
(recur (inc i) (conj v i))
v)))
(defn vrange2 [n]
(loop [i 0 v (transient [])]
(if (< i n)
(recur (inc i) (conj! v i))
(persistent! v))))
(quick-bench (def v (vrange 1000000)))
"Elapsed time: 459.59 msecs"
(quick-bench (def v2 (vrange2 1000000)))
"Elapsed time: 379.85 msecs"
एक मामूली speedup है यही कारण है, लेकिन 8x बढ़ावा ऐसा कुछ भी उदाहरण डॉक्स में निहित? http://clojure.org/transients:
शुरू सर्वर मोड में जावा कहानी, लेकिन अभी भी डॉक्स की तरह कुछ भी बदल जाता है ..
(quick-bench (def v (vrange 1000000)))
"Elapsed time: 121.14 msecs"
(quick-bench (def v2 (vrange2 1000000)))
"Elapsed time: 75.15 msecs"
यह है कि लगातार कार्यान्वयन यहाँ यात्रियों के बारे में पोस्ट के बाद से सुधार हुआ है है?
ट्रांजिस्टर के साथ बढ़ावा देने की कमी में अन्य कारक क्या योगदान दे सकते हैं?
मैं ओबजु 12.04 पर ओपनजेडीके जावा संस्करण 1.7 का उपयोग कर रहा हूं। हो सकता है कि यह दस्तावेज़ों में प्रयुक्त (अनुमानित) हॉटस्पॉट 1.6 संस्करण से बहुत धीमा है? लेकिन क्या यह नहीं होगा कि दोनों परीक्षणों को एक ही अंतर के साथ कुछ निरंतर धीमा होना चाहिए?
धन्यवाद डिएगो। यह वही था जो मैंने आशा की थी * कारण था। दूसरे शब्दों में, यह नहीं है कि दस्तावेज़ों में रिपोर्ट की तुलना में ट्रांजिस्टर धीमे होते हैं, यह है कि लगातार संग्रह तेजी से होते हैं। – Scott