2013-09-25 6 views
10

मैं जूलिया को एक सामान्य उद्देश्य वैज्ञानिक कंप्यूटिंग भाषा (पाइथन के विपरीत) के रूप में उपयोग कर रहा हूं, लेकिन स्टार्टअप समय बहुत सुस्त है।धीमी जूलिया स्टार्टअप समय

क्या इसे गति देने का कोई तरीका है?

$ time python -c 'print "Hello"' 
Hello 

real 0m0.030s 
user 0m0.018s 
sys 0m0.010s 

$ time julia -e 'println("Hello")' 
Hello 

real 0m4.614s 
user 0m4.644s 
sys 0m0.116s 

परिशिष्ट: Here जूलिया लेखकों में से एक पिछले साल से एक उद्धरण है। क्या इस रणनीति के साथ कुछ कठिनाई थी?

जूलिया के अधिकांश अपने आप में लिखा है, तो पार्स, टाइप-inferred और jitted, तो खरोंच से पूरे सिस्टम bootstrapping कुछ 15-20 सेकंड लेता है। इसे तेज़ी से बनाने के लिए, हमारे पास एक चरणबद्ध प्रणाली है जहां हम पार्स, टाइप-अवरक्त, और उसके बाद फ़ाइल sys.ji में प्रकार-अनुमानित एएसटी का क्रमबद्ध संस्करण कैश करते हैं। इस फ़ाइल को तब लोड किया जाता है और जब आप जुलिआ चलाते हैं तो सिस्टम को चलाने के लिए उपयोग किया जाता है। कोई एलएलवीएम कोड या मशीन कोड sys.ji में कैश किया गया है, हालांकि, सभी एलएलवीएम जिंगिंग को अभी भी जूलिया शुरू होने पर की आवश्यकता होती है, इसलिए लगभग 2 सेकेंड लगते हैं।

यह 2-सेकंड स्टार्टअप देरी काफी परेशान है और हमारे पास इसे ठीक करने की योजना है। मूल योजना पूरे जूलिया कार्यक्रमों को बाइनरी में संकलित करने में सक्षम होना है: या तो निष्पादन योग्य जिन्हें चलाया जा सकता है या .so/.dylib साझा पुस्तकालय जिन्हें अन्य प्रोग्रामों से बुलाया जा सकता है जैसे कि बस सी पुस्तकालयों को साझा किया गया था। बाइनरी के लिए स्टार्टअप समय किसी अन्य सी प्रोग्राम की तरह होगा, इसलिए 2-सेकंड स्टार्टअप विलंब गायब हो जाएगा।

+0

अब जूलियांग भंडार में एक शाखा है जिसे आप देख सकते हैं। https://github.com/JuliaLang/julia/pull/4898। शायद कुछ मुद्दे अभी भी शेष हैं, इसलिए अपने जोखिम पर आज़माएं। इसे शायद आगामी 0.3 रिलीज में शामिल किया जाएगा। – ivarne

उत्तर

7

branch मैं टिप्पणी में उल्लेख किया है अब विलय कर दिया गया और जूलिया अधिक, स्टार्टअप (और कुछ भी नहीं कर रही है) के लिए अनुकूलित है पहले से कहीं ज्यादा।

$> time julia -e 'println("Hello")' 
Hello 

real 0m0.622s 
user 0m1.013s 
sys  0m0.624s 

यह अब रात के निर्माण में उपलब्ध है, और अगले 0.3 रिलीज में शामिल किया जाएगा।

+0

'' 'समय जूलिया -e 'println (" हैलो ")' हैलो असली 1m35.137s उपयोगकर्ता 0m0.328s sys 1m33.604s ' '' और मुझे जूलिया 0.5.0 पर हूँ और यह है 16 जीआईबी रैम के साथ एक कोर i3 मशीन और रास्पबेरी पाई नहीं! –

+0

ऐसा लगता है कि आपकी जूलिया स्थापना के साथ कुछ गलत है। आप किस ओएस का उपयोग कर रहे हैं और आपने जुलीया – ivarne

+0

कैसे स्थापित किया है, मैं उबंटू 16.04.1 एलटीएस का उपयोग कर रहा हूं। मैंने इसे ".tar.gz" फ़ाइल से स्थापित किया है। –

7

दुर्भाग्य से जूलिया वर्तमान में शुरू करने के लिए बहुत समय का उपयोग करता है, इसलिए वास्तव में छोटी समस्याओं के लिए इसे एक बैश स्क्रिप्ट में उपयोग करना लगभग असंभव है। आपको शायद एक परिणाम मिलेगा जो जूलिया को एक जटिल उदाहरण के साथ अधिक पसंद करता है जो कई बार चीजों को करने के लिए लूप का उपयोग करता है, लेकिन 2-4 सेकेंड हेड स्टार्ट के साथ इसे पर्याप्त समय तक पकड़ने में बड़ी समस्या होती है। यदि स्टार्टअप समय आपके वैज्ञानिक कंप्यूटिंग के लिए सबसे महत्वपूर्ण है, तो जूलिया अभी तक तैयार नहीं है।

बेवकूफ रिकर्सिव फॉर्मूला का उपयोग करके कंप्यूटिंग फाइबोनैकी संख्याओं को देखने के लिए एक समान अनुचित तुलना है। यदि आप 26 से ऊपर जाते हैं तो यह बहुत खराब हो जाता है। यह भी ध्यान दें कि कोड के जूलिया संस्करण को कैसे कॉम्पैक्ट किया जाता है।

>>> ivarne~/dev/julia$ time julia -e 'fib(x) = x<2?1:fib(x-1)+fib(x-2);println(fib(36))' 
24157817 

real 0m2.763s 
user 0m2.776s 
sys  0m0.093s 
>>> time python -c $'def fib(x):\n if x<2: return 1\n else: return fib(x-1)+ fib(x-2);\nprint fib(36)' 
24157817 

real 0m8.371s 
user 0m8.336s 
sys  0m0.025s 

जैसा कि आपने समस्या को तेज करने के लिए एक तरीके से पूछा था; यहाँ यह है:

>>> time echo "Hello" 
Hello 

real 0m0.000s 
user 0m0.000s 
sys  0m0.000s 
+0

मुझे यकीन नहीं है कि तुलना को साबित करना क्या है। पायथन संस्करण छोटी है - दो संस्करण एक ही संख्या की गणना भी नहीं करते हैं!- और यदि आप कॉम्पैक्टनेस की परवाह करते हैं, तो आप 'fib = lambda x: 1 लिखा हो सकता है यदि x <3 else fib (x-1) + fib (x-2)', हालांकि आमतौर पर पाइथन प्रोग्रामर शुद्धता और स्पष्टता के बारे में अधिक ध्यान रखते हैं वर्ण। – DSM

+0

मैं यह दिखाने का प्रयास करता हूं कि जब आप जूलिया और पायथन के बीच प्रदर्शन की तुलना करते हैं, तो परिणाम आपके द्वारा किए गए कार्य पर अत्यधिक निर्भर होता है। – ivarne

+2

मैं सबसे कुशल गूंज खोजने की कोशिश नहीं कर रहा हूं; -पीआई बस सोच रहा था कि अत्याधुनिक जूलिया –

संबंधित मुद्दे