2017-06-26 7 views
23

ट्विटर, गिटहब और फेसबुक समूह चर्चाओं पर नोड.जेएस समुदाय में "क्रैंकशाफ्टस्क्रिप्ट" (और "क्रैंकशाफ्टजेएस") में अधिक से अधिक संदर्भ हैं। मैंने सोचा था कि Node.js सी में लिखा गया था ++ और जावास्क्रिप्ट, तो क्या CrankShaftScript इस तरह प्रदर्शन प्रतिगमन कीड़े में की चर्चा करते हुए है: (Node.js में "क्रैंकशाफ्टस्क्रिप्ट" क्या है?

https://github.com/nodejs/CTC/issues/146#issue-237435588

उत्तर

15

CrankShaftScript एक समुदाय को अपनाया गैर मुहावरेदार और/या गैर मानक अनुरूप जावास्क्रिप्ट के लिए इस्तेमाल किया है कि केवल निष्पादित और/या जावास्क्रिप्ट क्रम कि क्रेंकशाफ्ट JIT कम्पाइलर को रोजगार v8 के विशिष्ट संस्करणों में अच्छा प्रदर्शन करेंगे शब्द है । विशिष्ट उदाहरणों में शामिल हैं: v8 में जेआईटी ऑप्टिमाइज़ेशन कमियों के आसपास काम करने के लिए मुश्किल-से-बनाए रखने वाले फैशन में लिखे गए लूप, और v8- विशिष्ट अंतर्निहित फ़ंक्शंस/ग्लोबल्स का उपयोग करना।

यह शब्द मूल रूप से नोड-चक्रकोर और स्पाइडरर्नोड में कुछ रूट प्रदर्शन समस्याओं का वर्णन करने के लिए तैयार किया गया था, जो नोड.जेएस वितरण हैं जो v8 के बजाय चक्रकोर और स्पाइडरमोन्की रनटाइम को नियोजित करते हैं।

अब यह समझाने के लिए शॉर्टेंड के रूप में उपयोग किया जा रहा है कि क्यों नोड.जेएस 8.1 रिलीज श्रृंखला, जो वी 8 के एक नए संस्करण में अपडेट की गई है, में वी 8 की क्रैंकशाफ्ट जेआईटी के कारण माइक्रो-मैक्रो-बेंचमार्क में कई प्रदर्शन रिग्रेशन हैं। टर्बोफ़ान (कभी-कभी "टीएफ" के रूप में जाना जाता है)। इन मुद्दों में के रूप में:

इन कारणों से, Node.js समुदाय को सक्रिय रूप से Node.js कोर कोड में CrankShaftScript के उदाहरण excising पर काम कर रहा है, साथ ही सामान्य एनपीएम संकुल में भी। यह नोड-चक्रराकोर जैसे वैकल्पिक नोड.जेएस वितरणों को बेहतर प्रदर्शन करने और Node.js. में जावास्क्रिप्ट रनटाइम के भविष्य के उन्नयन के जोखिम को कम करने में मदद करनी चाहिए।

+1

वी 8 5 के साथ नोड v8.x का एक संस्करण।9 + (जो डिफ़ॉल्ट रूप से टर्बोफ़ान को सक्षम बनाता है) अभी तक इस लेखन के रूप में जारी नहीं किया गया है। हालांकि नोड v8.0.0 ने वी 8 5.8 लाया था (हालांकि वी 8 का वह संस्करण डिफ़ॉल्ट रूप से टर्बोफ़ान को सक्षम नहीं करता है)। स्पष्टीकरण के लिए – mscdex

+0

धन्यवाद! मैंने सवाल संपादित कर लिया है। –

+1

मेरी टिप्पणी अभी भी नोड v8.1.x के लिए प्रासंगिक है, जिसमें केवल V8 5.8 है। हालांकि 5.8 के साथ कुछ रिग्रेशन हो सकते हैं, यह डिफ़ॉल्ट रूप से टर्बोफ़ान पर स्विच की वजह से नहीं है क्योंकि जैसा कि पहले बताया गया था, डिफ़ॉल्ट इंजन का स्विच केवल 5.9 में हुआ था। इसके अलावा, नोड v8.1.x सेमवर के कारण कभी भी V8 टक्कर 5.9+ (केवल नोड v8.2.x या बाद में) नहीं देखेगा। – mscdex

1

क्रैंकशाफ्ट वी 8, Node.js 'जावास्क्रिप्ट क्रम के लिए संकलन बुनियादी सुविधाओं है details)।

यह now being replaced by TurboFan है।

+6

मुझे यकीन है कि आप अभी भी इस उत्तर में सुधार कर रहे हैं। :) –

+0

हम्म, निराशा ... –

22

क्रैंकशाफ्टस्क्रिप्ट समुदाय द्वारा जेएस मुहावरे (जैसे कि कुछ प्रकार के लूप) को दिया गया नाम है जो वी 8 के क्रैंकशाफ्ट इंजन पर तेजी से (अनुमानित) चलाता है।

क्रैंकशाफ्ट को टर्बोफ़ान नामक इंजन द्वारा प्रतिस्थापित किया जा रहा है। वर्षों से देवताओं द्वारा लिखे गए बहुत से जेएस कोड विशेष रूप से क्रैंकशाफ्ट पर तेजी से चलाने के लिए क्रैंकशाफ्ट (जैसे "क्रैंकशाफ्टस्क्रिप्ट" में लिखे गए) पर तेजी से चलाने के लिए लिखे गए हैं - यह अब आवश्यक नहीं है क्योंकि वी 8 इंजन अब है अलग और क्रैंकशाफ्ट पर सबसे तेजी से चलने वाला कोड टर्बोफ़ान पर सबसे तेज़ी से चलाने की गारंटी नहीं है।

मामले में मेरा उत्तर यहाँ भी अत्यधिक शब्द है, NodeJS Benchmarks धागा विस्तार बेहतर हो सकता है कि पर एक great comment है:

... मैंने देखा है कि नोड कोर के कुछ भागों CrankshaftScript में तरह-की लिखित हैं , यानि सावधानीपूर्वक उन चीजों की ओर ट्यून किया गया जो क्रैंकशाफ्ट में बेहद अच्छी तरह से काम करता है।

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