के साथ जावास्क्रिप्ट मल्टीथ्रेडिंग संभव है, मैं वर्तमान में एक बहुत ही सरल मल्टीथ्रेडिंग इंजन को लागू करने के लिए IFRAMEs का उपयोग करने के विचार के साथ खेल रहा हूं। हालांकि मेरे प्रारंभिक परिणाम मुझे दिखा रहे हैं कि धागे में चलना सिर्फ एक धागे में चलने से धीमा है।IFRAMEs
मेरा परीक्षण है:
एकल थ्रेड
var start = new Date().getTime();
for (var i = 0; i < 300; i++) { /* Do costly processor operations */ }
debug('Took: ' + new Date().getTime() - start);
एकाधिक धागे
var start = new Date().getTime();
// In thread 1
for (var i = 0; i < 100; i++) { /* Do costly processor operations */ }
// In thread 2
for (var i = 100; i < 200; i++) { /* Do costly processor operations */ }
// In thread 3
for (var i = 200; i < 300; i++) { /* Do costly processor operations */ }
// In a callback in the original FRAME (thread)
debug('Took: ' + new Date().getTime() - start);
तो के रूप में देखा जा सकता है, मैं तो बस iframes के बीच कार्यभार बंटवारे कर रहा हूँ (उपरोक्त नोट कोड केवल मैं जो कर रहा हूं उसकी एक बेहतर तस्वीर देने के लिए है, यह कोड काम नहीं कर रहा है)।
तो मैं सोच रहा हूं कि FRAMEs फ़ायरफ़ॉक्स का उपयोग करने के बावजूद अभी भी केवल एक जेएस इंजन है? क्या यह धारणा सही है? (मेरे शोध बेवकूफ प्रतिपादन), क्या अन्य ब्राउज़र अलग हैं?
एक त्वरित Googles मैं इस लेख मिला कर: http://codediaries.blogspot.com/2009/12/real-javascript-multithreading-using.html
हालांकि प्रदर्शन में सुधार यहाँ हासिल होने की संभावना सिर्फ समानांतर HTTP अनुरोध कर के बजाय संसाधन क्षमता से अधिक हैं।
आपकी अंतर्दृष्टि के लिए धन्यवाद।
गुइडो
आप लूप काउंटर में कुछ शून्य जोड़ते हैं?इसे क्रमश: 10000, 20000 और 30000 बनाएं और देखें कि क्या होता है। – chakrit
चक्रित: मेरे वास्तविक परीक्षण पुनरावृत्तियों के 1000s का उपयोग कर रहे हैं, उपरोक्त उदाहरण सादगी के लिए छोटा है। – gatapia
यह सुनिश्चित करने के लिए एक बात यह है कि आप भी ध्यान में रखते हैं जावास्क्रिप्ट टाइमर रिज़ॉल्यूशन है, जो अक्सर 15ms होता है: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie