12 पॉइंट द्वारा sftblw 2024-08-19 | 9 टिप्पणियां | WhatsApp पर शेयर करें

Misskey (GeekNews) एक माइक्रोब्लॉगिंग सर्वर प्रोग्राम है जो ActivityPub federation को support करता है। Misskey का विकास मुख्य रूप से जापान में हो रहा है, और इसमें emoji reactions, अपना markup MFM, keyword tracking (antenna), profile सजाना, अपने script AiScript का उपयोग करके interactive pages बनाना, minigames आदि जैसे कई मज़ेदार फीचर्स हैं, इसलिए मनोरंजक अनुभव चाहने वाले यूज़र्स के बीच यह एक लोकप्रिय प्लेटफ़ॉर्म है。

जहाँ तक मुझे पता है, Misskey का तकनीकी स्टैक इस प्रकार है। (यह गलत भी हो सकता है।)

  • NodeJS, TypeScript
  • Koa.js, PostgreSQL, Redis
  • Vue

इस लेख में Misskey के maintainer syuilo ने Misskey के source code के साथ NodeJS की तुलना में Bun के प्रदर्शन की जाँच की है।

  • उद्देश्य यह परखना है कि क्या मौजूदा source को जस का तस Bun पर चलाने से वह तेज़ हो जाता है। लेख में स्पष्ट किया गया है कि Bun के लिए अलग से optimization नहीं किया गया, और जहाँ incompatible code जटिल था वहाँ परीक्षण नहीं किया गया।
  • लेख में यह भी कहा गया है कि इसे केवल एक उदाहरण के रूप में ही देखा जाए।
  • परीक्षण Ubuntu पर किया गया था, लेकिन Windows में भी कोई बड़ा अंतर नहीं था।

निष्कर्ष पहले ही कहें तो, इस मामले में Bun पर उल्टा प्रदर्शन गिरने की प्रवृत्ति ज़्यादा दिखाई दी। यानी यह नहीं कहा जा सकता कि मौजूदा बड़े codebase को Bun पर चलाने से वह जादू की तरह तेज़ हो जाएगा... यही निष्कर्ष लगता है। ChatGPT द्वारा संक्षेपित मुख्य बातें इस प्रकार हैं।

  • मेमोरी उपयोग: Node लगभग 200MB, Bun लगभग 800MB — Bun ने कहीं अधिक मेमोरी खर्च की।
  • निष्पादन गति: timeline retrieval जैसी विभिन्न प्रोसेसिंग में Node ने बेहतर परिणाम दर्ज किए। खासकर post लिखते समय Node को 5 सेकंड और Bun को 10 सेकंड लगे, यानी Node 2 गुना तेज़ था।
  • AiScript: pure JavaScript code execution में Node (V8 engine) लगभग 1.5 गुना तेज़ था।

लेख में codebase ke alag-alag hisson ke execution benchmark diye gaye hain, lekin WebSocket ke ekmatra single-run execution ko chhodkar baaki sabhi mein NodeJS ne ya to thoda ya kaafi behtar pradarshan dikhaya. WebSocket execution ke maamle mein bhi 100,000 baar chalane par NodeJS thoda tez nikla।

हालाँकि, लेख के लेखक syuilo अभी भी Bun की संभावनाओं को लेकर आशावान हैं, और यह भी उल्लेख करते हैं कि अतिरिक्त optimization के साथ प्रदर्शन बेहतर हो सकता है।

9 टिप्पणियां

 
nxhtk 2024-08-19

अगर सिर्फ़ बदलकर चलाने वाला मामला हो, तो node:crypto या zlib से जुड़ी लाइब्रेरी जैसी कुछ ऐसी स्थितियां भी हैं जिन्हें Bun के docs या issues में भी साफ़ तौर पर बताया गया है कि वे अभी पूरी तरह optimize नहीं हुई हैं.

अगर उदाहरणों में 5 सेकंड से बढ़कर 10 सेकंड जितना धीमा हो गया हो, तो शायद वजह यही हिस्सा हो सकता है. असल में मुझे भी jwt से जुड़ी लाइब्रेरी में ऐसी समस्या की वजह से कई गुना slowdown झेलना पड़ा था, इसलिए लाइब्रेरी बदलकर उसे optimize करना पड़ा था.

 
savvykang 2024-08-19

मुझे यह जानने की जिज्ञासा है कि आप जापानी तकनीकी ब्लॉग पोस्ट कहाँ से लाते हैं। वे काफ़ी व्यवस्थित और सारगर्भित लगते हैं।

 
tribela 2024-08-20

दूसरे लेखों के बारे में नहीं पता, लेकिन यह लेख Misskey पर पोस्ट किया गया था, इसलिए इसे Fediverse में देखा जा सकता था (मैंने भी इसे पहले वहीं देखा था और उसके बाद इसे यहाँ पोस्ट होते देखा)।

 
bus710 2024-08-20

मुझे इस लेख का स्रोत ठीक से पता नहीं है, लेकिन लगता है कि Qiita पर कई अच्छे लेख आते हैं.
ऐसे कई लोग हैं जो अंग्रेज़ी-भाषी दुनिया या कोरियाई ब्लॉगों से अलग नज़रिये से विश्लेषण करने वाले लेखों का अनुवाद करके अलग-अलग चैनलों पर पोस्ट करते हैं, और आम तौर पर उनमें एक समानता यह थी कि वे Qiita के लेखों का अनुवाद थे.

 
savvykang 2024-08-21

Google Search के auto-complete ने Kita और zenn की तुलना करने वाला search query सुझाया, इसलिए मैं zenn भी ढूंढ पाया। जानकारी के लिए धन्यवाद।

 
uyeong21c 2024-08-20

Qiita को "कीटा" पढ़ा जाता है।

 
bus710 2024-08-20

अच्छा, ऐसा है, थोड़ा झेंप गया।

 
tsboard 2024-08-19

काफी दिलचस्प नतीजा है। Bun के मामले में वेब फ्रेमवर्क के रूप में ElysiaJS की काफी सिफारिश की जाती है, लेकिन अगर Bun द्वारा दिए गए optimized API का इस्तेमाल न किया जाए तो उलटे performance गिरने की समस्या थी। इसमें Koa.js इस्तेमाल किया गया बताया गया है, इसलिए अनुमान है कि उसी तरफ performance काफी गिरी होगी।

 
cometkim 2024-08-19

हमें runtime और system integration के फर्क को अलग करके देखना चाहिए।

Bun जिस performance पर गर्व करता है, वह कुल मिलाकर JSC की विशेषताओं, कुछ system integration optimizations (या feature reduction), और अच्छे base libraries के चयन से आती है।

इसलिए छोटे benchmark में Bun के जीतने की प्रवृत्ति होती है, लेकिन बड़े पैमाने/long-running benchmark में उसके Node.js से पीछे रह जाने की प्रवृत्ति भी साथ-साथ दिखती है।