ब्लेज़र का प्रदर्शन


84

मैं ब्लेज़र का उपयोग शुरू करना चाहता हूं, इस तथ्य के बावजूद कि यह अभी भी अल्फा स्तर पर है।

जैसा कि मैंने इसे समझा, ब्लेज़र क्लाइंट साइड पर C # संकलित करने के लिए WebAssembly का उपयोग करता है।

और मेरे पास ये प्रश्न हैं:

क्या यह दृष्टिकोण, उदाहरण के लिए, प्रतिक्रिया / Vue, जावास्क्रिप्ट में संकलित की तुलना में तेजी से चलता है?

क्या यह सच है कि ब्राउज़र को हर बार पेज लोड होने पर WebAssembly लाइब्रेरी को डाउनलोड करने की आवश्यकता होगी?

इंटरनेट पर लोकप्रिय जेएस फ्रेमवर्क के प्रदर्शन की कोई तुलना नहीं है। इसलिए मैं Microsoft से नए ढांचे के सैद्धांतिक प्रदर्शन को जानना चाहूंगा। पहले ही, आपका बहुत धन्यवाद।


मैं यह लेख @chris sainty इसे अच्छी तरह से समझाता हूं। chrissainty.com/what-is-blazor-and-why-is-it-so-exciting
मजीदुर रहमान

जवाबों:


146

क्या यह सच है कि ब्राउज़र को हर बार पेज लोड होने के बाद वेबस्वाम लाइब्रेरी डाउनलोड करने की आवश्यकता होगी?

नहीं, ब्राउज़र फ़ाइलों को कैश कर सकते हैं। Blazor ऐप्स के लिए कॉमन CDN ट्रिक करेगा।

क्या यह प्रणाली, उदाहरण के लिए, प्रतिक्रिया / Vue, जावास्क्रिप्ट में संकलित की तुलना में काम करने के लिए तेज़ है?

ब्लेजर वेब असेंबली का उपयोग करता है, ऑन पेपर वेब असेंबली किसी भी जेएस लाइब्रेरी की तुलना में तेज़ होनी चाहिए, हालांकि सभी ब्राउज़रों में अभी तक एक परिपक्व वेब असेंबली पार्सर नहीं है। तो आप पा सकते हैं कि ब्राउज़र अब तक एक इष्टतम गति में वेब असेंबली नहीं चलाएंगे।

आप एक छोटा ब्लेज़र ऐप बना सकते हैं और इसे फ़ायरफ़ॉक्स, क्रोम या एज में चला सकते हैं। ज्यादातर मामलों में फ़ायरफ़ॉक्स क्रोम या एज की तुलना में बहुत तेज़ी से ब्लेज़र एप्लिकेशन चलाता है, जिसका अर्थ है कि ब्राउज़र निर्माताओं को अभी भी सुधार करने की आवश्यकता है, यहां तक ​​कि फ़ायरफ़ॉक्स भी सुधार कर सकता है।

यदि आपके ऐप को DOM को अक्सर एक्सेस करने की आवश्यकता है, तो निश्चित रूप से वेब असेंबली / ब्लेज़र किसी भी JS पुस्तकालयों की तुलना में धीमा होगा क्योंकि वेब असेंबली सीधे Invokes का उपयोग किए बिना DOM तक पहुंच नहीं सकता है (जो इस समय धीमा है, कृपया मेरे ब्लेज़र बेंचमार्क को देखें) ।

फ़ायरफ़ॉक्स 10,000 पर RegisteredFunction.InvokeUnmarshalle से खाली तरीकों पर कॉल करने में 250ms लगते हैं जबकि मेरे पीसी में क्रोम और किनारे की ज़रूरत 2400ms से अधिक है। ' शुद्ध जेएस में यह समान परिदृश्य के लिए 10 मिलीसे कम से कम होता है।

इसके अतिरिक्त, वर्तमान कार्यान्वयन ब्लेज़र का ब्राउज़र वेब असेंबली इंजन के शीर्ष पर अपना स्वयं का MSIL इंजन है, जिसका अर्थ है कि ब्लेज़र परियोजना को चलाने के लिए दो व्याख्याकार काम कर रहे हैं, जैसे दो अनुवादक एक के बजाय एक वार्तालाप की व्याख्या कर रहे हैं। वर्तमान में Microsoft AOT कंपाइलर पर काम कर रहा है, जो अभी रिलीज़ नहीं हुआ है। एक बार इसकी रिहाई ब्लेज़र वर्तमान कार्यान्वयन की तुलना में बहुत तेज़ होगी।

http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/

हम सुरक्षित रूप से मान सकते हैं कि वेब असेंबली वेब डेवलपमेंट का भविष्य है, लेकिन फिलहाल हम ब्लेज़र के भविष्य के बारे में कुछ नहीं कह सकते। कागज़ पर ब्लेज़र किसी भी रूपरेखा से तेज़ हो सकता है, हालाँकि हमें सिद्धांतों को व्यावहारिक बनाने के लिए वेब असेंबली मेंटेनर, ब्राउज़र डेवलपर्स, माइक्रोसॉफ्ट और समुदायों से प्रतिबद्धता की आवश्यकता है।

अपडेट 10 जुलाई 2018

WebAssembly repos में नए प्रस्ताव हैं।

  1. WebAssembly को सीधे डोम से हैंडल करना। https://github.com/WebAssembly/proposals/issues/8

  2. GC के साथ WebAssembly के लिए संदर्भ प्रकार। https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md

दो प्रस्तावों के ऊपर भविष्य में DOM और webassembly के बीच बहुत तेजी से बातचीत का मार्ग प्रशस्त होगा। IOW ब्लेज़र भविष्य में बहुत तेज़ होगा।

अपडेट 17 अक्टूबर 2018

फ़ायरफ़ॉक्स टीम जेएस -> डब्ल्यूएएसएम कॉल जेएस -> जेएस विधि कॉल के रूप में तेजी से पहुंचने में सक्षम थी। जब तक WebAssembly समर्थन की बात आती है, तब तक फ़ायरफ़ॉक्स किसी भी अन्य ब्राउज़रों से बहुत आगे है

https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/


2
मेरी समझ एक कारण है कि रिएक्ट और अब एंगुलर और अन्य फ्रेमवर्क बहुत तेज हैं, वास्तविक डोम की तुलना में वर्चुअल डोम अवधारणा है, और केवल अंतर को लागू करना है। क्या ऐसा कुछ है जो ब्लेज़र करता है या भविष्य में करने की योजना है?
क्लेवरगुए 25

1
@ Cleverguy25 कोणीय एक आभासी डोम का उपयोग नहीं करता है ... रिएक्ट करता है, यही वजह है कि प्रतिक्रिया बड़े ऐप पर बेहतर प्रदर्शन
देगी

1
@ Cleverguy25 Blazor रिएक्ट की तरह वर्चुअल डोम का इस्तेमाल करता है जो इसे काफी तेज बना सकता है। कोणीय में आभासी डोम का उपयोग करने की कोशिश थी लेकिन जैसा कि मुझे पता है कि इसे वापस ले लिया गया है।
nzrytmn

3
केवल HTML में डेल्टा अद्यतन लागू करने के लिए ब्लेज़र में एक आभासी DOM है। यह कोड की व्याख्या भी करता है, वर्तमान में कोई wasm संकलन नहीं है।
पीटर मोरिस

2
एओटी अनिवार्य रूप से 2021 के Q1 पर धकेल दिया गया।
रोहन बोजा

1

जैसा कि मैंने इसे समझा, ब्लेज़र क्लाइंट साइड पर C # संकलित करने के लिए WebAssembly का उपयोग करता है।

आधा सच। आप अपना कोड WebAssembly (WASM) क्लाइंट साइड (हाँ यह C # क्लाइंट की तरफ है) लिख सकते हैं, लेकिन आप लॉजिक सर्वर साइड को भी निष्पादित कर सकते हैं। दोनों के फायदे हैं। यदि आप WASM मार्ग पर जाते हैं तो आपका सभी कोड दिखाई देता है। लेकिन यह तर्क की तुलना में तेजी से रेंडर कर सकता है यदि तर्क सभी सर्वर आधारित है - लेकिन यदि इसका सर्वर आपके कोड पर आधारित है, तो देखने योग्य नहीं है।

क्या यह दृष्टिकोण, उदाहरण के लिए, प्रतिक्रिया / Vue, जावास्क्रिप्ट में संकलित की तुलना में तेजी से चलता है?

नहीं, मैंने एक टन Vue किया है और Vue तेज़ी से चलता है। लेकिन मैं Blazor का उपयोग करके तेजी से कोड लिख सकता हूं। और ब्लेज़र एक वर्चुअल स्क्रॉलिंग सॉल्यूशन प्रदान करता है जो इसे तेजी से प्रदर्शित कर सकता है। मेरे मामले में उपलब्ध प्लॉटिंग घटक बहुत धीमे थे। मैंने C # और JavaScript का उपयोग करते हुए एक ब्लेज़र घटक लिखा, जो बहुत अच्छा काम करता था। ज्यादातर समय मैं WASM कोड के बारे में चिंता नहीं करता, बहुत धीमी गति से चल रहा है .... लेकिन बहुत तेजी से होने की साजिश की जरूरत है ..... और ब्लेज़र ने मुझे अपना केक दिया ... मुझे बस कुछ कम करना था जावास्क्रिप्ट में स्तर का काम। पिछले 6 महीनों में ब्लेज़र का निष्पादन तेजी से हुआ है और टीम का कहना है कि .Net 6 के बाहर आने पर और भी बहुत कुछ किया जाना है। लेकिन इसकी तेजी से 99% के लिए पर्याप्त है जो मुझे कभी भी करने की आवश्यकता है।

क्या यह सच है कि ब्राउज़र को हर बार पेज लोड होने पर WebAssembly लाइब्रेरी को डाउनलोड करने की आवश्यकता होगी?

अगर वे कैश नहीं हैं। और पहली बार जब वे लोड करते हैं, तो यह धीमा नहीं होता है यदि आपके पास एक सभ्य कनेक्शन है। 10 मेग के आदेश पर है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.