إلكترون هو فلاش لسطح المكتب

لماذا في تطبيق Slack لسطح المكتب ، على الأرجح ، هناك برنامج تشغيل لوحدة تحكم لعبة Xbox للعمل وما هو سيئ حقًا في استخدام Electron لبناء تطبيقات سطح المكتب.

الصورة

في لقطة الشاشة أدناه ، وفقًا لملف التعريف ، يستهلك Slack جميع موارد المعالج تقريبًا. أتساءل ماذا يفعل هناك؟

الصورة

بدأت العملية في الخلفية عندما حدث ذلك. لم أتفاعل حتى مع سلاك - كنت في اجتماع. ولقد لاحظت ذلك فقط بسبب ضجيج نظام التبريد في جهاز الكمبيوتر المحمول الخاص بي. إعادة تشغيل Slack هذه المرة حلت المشكلة.

ولكن هذا أمر طبيعي بالنسبة إلى Slack. في الخلفية ، يستهلك Slack 5٪ من المعالج. ماذا يفعل؟ ليس لدي فكرة.

أراهن أن فريق تطوير Slack لا يعرف أيضًا. كم عدد أسطر التعليمات البرمجية التي كان عليهم كتابتها لجعل عملهم يعمل؟ أعتقد أن حوالي 50 ألف. ربما مئة ألف. لكن Slack ليس تطبيقًا أصليًا. أو ليس تطبيقًا أصليًا عاديًا. يتم تشغيله فوق Electron ، مما يعني أنه عند تنزيله ، فإنك في الواقع تقوم بتنزيل نسخة كاملة من Google Chrome ( بدلاً من ذلك ، Chromium - تقريبا. Trans. ). يحتوي Chrome في وقت كتابة هذا التقرير على 15 مليون سطر من التعليمات البرمجية التي ليست تعليقات. رمز Slack مباشرة أقل من 1٪ من حجم التنزيل.

الكروم نفسه لا يزال خنزيرًا. إنه كبير ومعقد. يستخدم ذاكرة الوصول العشوائي والمعالج كما لو لم يطالب بها أي شخص آخر ويقلل عمر البطارية بشكل كبير.

يمكنك التفكير في Slack كبرنامج JavaScript صغير يعمل داخل نظام تشغيل Chrome آخر (جهاز افتراضي) تقوم بتشغيله بشكل أساسي لاستخدام نظير IRC. حتى إذا كان Chrome نفسه قيد التشغيل بالفعل ، فإن كل تطبيق على Electron ينشر نسخته الإضافية الخاصة به.

وإن وصف Chrome بنظام التشغيل ليس من قبيل المبالغة. من خلال عدد أسطر التعليمات البرمجية ، يكون Chrome تقريبًا بنفس حجم نواة Linux . مثل نواة لينكس ، لديه واجهة برمجة تطبيقات لمختلف الأجهزة ، بما في ذلك OpenGL و VR و MIDI. يحتوي على نسخة مدمجة من SQLite ، ونظام إدارة الذاكرة ومدير المهام الخاص به. على نظام التشغيل macOS ، يحتوي على برنامج تشغيل USB لوحدة تحكم ألعاب Xbox 360. (أعلم أنه موجود لأنني كتبته. عذرًا.)

هل يحتوي Slack على الكود الخاص بوحدة التحكم Xbox؟ هل يعرف فريق سلاك عن هذا؟ هل يعرف أحد عن هذا؟ يستهلك Slack 160 ميغابايت من مساحة القرص. هذا هو حوالي 70 نسخة غير مضغوطة من سيد الخواتم. تطبيقات Electron الأخرى على جهاز الكمبيوتر الخاص بي هي Spotify (200 ميجابايت) و Atom (260 ميجابايت). لقد قمت أولاً بتثبيت Linux باستخدام الأقراص المرنة. يستغرق 450 قرص مرن لحرق هذه التطبيقات الثلاثة البسيطة. معا يزنون مثل توزيع Ubuntu المكتبي. الذي أعتقد أنه يحتوي على عميل IRC ومحرر نص ومشغل موسيقى. نظام تشغيل كامل وبيئة مستخدم ومتصفح ويب.

ستقول أن مساحة القرص لا قيمة لها الآن. نعم ، ولكن ليس ذاكرة الوصول العشوائي. جهاز MacBook Pro اللامع الجديد مجهز بـ 8 غيغابايت من ذاكرة الوصول العشوائي بشكل افتراضي. نظرًا لعمر البطارية ، لا يمكنك شراء طراز يزيد حجمه عن 16 جيجابايت. والآن ، يوجد Slack في مكان ما بين 300 ميغابايت و 1 غيغابايت في ذاكرة الكمبيوتر المحمول:

الصورة

تعال. هذا تطبيق لمشاركة النص.

شيء آخر ينقصه دائمًا هو طاقة البطارية. تحافظ المعالجات الحديثة على الطاقة من خلال التوقف كلما أمكن ذلك (عندما لا تكون هناك مهام). لعنة إدارة الطاقة هي البرامج التي تستخدم المعالج باستمرار لبضع في المئة. إنها تجعل المعالج يستيقظ باستمرار ، فيركلوك وتوقف مرة أخرى. هذه هي الطريقة المثالية لتدمير طاقة البطارية الثمينة. إذا كان لدى شخص ما وقت (اتركه يعمل) - فسأرى كم تقلل Spotify و Slack و Atom من عمر البطارية على أجهزة الكمبيوتر المحمولة الحديثة. هذا أمر لا يصدق.

الصورة

ولا ، لا يقوم Spotify بتشغيل الموسيقى. انه فقط ... يركض. يفعل شؤونه الكروم الغامضة. ويستخدم أيضًا نسبة قليلة من المعالج. فقط لتوجد.

(أثناء كتابة هذه الملاحظة ، قرر Chrome أخذ 100٪ من موارد المعالج ردًا على ذلك. في إدارة المهام المضمنة ، كانت عملية "متصفح" غامضة. شكرًا ، Chrome.)

لنكون صادقين ، جافا سكريبت خارج المتصفح ليست مشكلة. في الواقع ، أعتقد أن واجهات برمجة التطبيقات التي توفرها شبكة الويب الحديثة أفضل بكثير من واجهات برمجة التطبيقات لنظام التشغيل الحالي. يجب علينا استخدامها.

لكننا بحاجة إلى العثور على فرصة لاستخدام هذه النماذج الجديدة (React وأصدقائه) على منصات سطح المكتب دون الحاجة إلى تشغيل المزيد من النسخ الدموية من Chrome. أنا غير مهتم بتطبيقك لتبرير بدء نسخة أخرى من Chrome. من السهل على المطور أن يقع في فخ الشعور بأن تطبيقك أو موقعك هو هدية للبشرية وأهم شيء يمكنهم القيام به. لماذا لا تستفيد من الموارد الزائدة؟ نحن بحاجة إلى محاربة طريقة التفكير هذه. يؤدي مثل هذا المسار إلى عالم حيث لا يمكن أن يكون لدينا أشياء جيدة. يؤدي هذا المسار إلى عالم حيث تحتاج بطاريات أجهزة الكمبيوتر المحمولة الخاصة بنا إلى النمو من أجل توفير الطاقة للمعالجات ، بحيث تؤدي عملًا أكثر فائدة. يؤدي مثل هذا المسار إلى عودة Shockwave Flash والهواتف التي تسخن في الجيوب ، والتي يتم تفريغها بشكل غامض عندما نريد استخدامها. إلى جنون العظمة فيما يتعلق بشحن البطارية وإغلاق التطبيقات بمجرد الانتهاء من العمل معهم. (أنظر إليك و iTunes و Mischief).
فقط قل إلكترون NO
المطورين ، لا تسمح لأصدقائك بكتابة الطلبات على Electron. إذا كنت تريد استخدام JS و React ، فاستخدم React Native . إنه مثل Electron ، ولكن ليس عليك توزيع نسخة من Chrome على جميع المستخدمين وتشغيل نسخة أخرى من Chrome لاستخدام تطبيقك. اتضح أن أنظمة التشغيل الحديثة لديها بالفعل مكتبات واجهة مستخدم جيدة وسريعة. استخدمهم ، المغفلون!

حقيقة محزنة أخرى هي أنه حتى العديد من المطورين ليس لديهم فكرة عما يحدث على أجهزة الكمبيوتر الخاصة بهم. إنهم يستخدمون سلاك ، لكنهم لا يعرفون كم هو شره. من مسؤوليتك ، كمطور ، أن تعرف كل هذا. تدرب. استكشاف أدوات التنميط. استخدم iStatMeters أو أحد نظائرها المجانية. لا يمكنك تحسين ما لا تقوم بقياسه.

ربما يجب علينا شراء أجهزة كمبيوتر أبطأ ليشعر بالألم. قام Facebook بتعمد تحديد سرعة الإنترنت في مكاتبه مرة واحدة في الأسبوع ، من أجل التعاطف مع مستخدميه في بلدان أخرى من العالم الثالث (khe-Australia-khe). ربما ، كمطورين ، يجب أن نقوم بذلك أيضًا مع أجهزة الكمبيوتر الخاصة بنا ، على سبيل المثال ، جعل الشفرة تعمل بشكل أبطأ بكثير من المعتاد من أجل تسليح أنفسنا بحدس الأداء. منذ بضع سنوات ، تركت الكمبيوتر المحمول في العمل لعطلة نهاية أسبوع طويلة. بدلاً من ملاحقته ، قررت توصيل جهاز Raspberry Pi (الجيل الأول البطيء) واستخدامه في التطوير. فجأة ، أصبحت العمليات العديدة التي تم إجراؤها على الفور على جهاز الكمبيوتر المحمول العادي i7 بطيئة للغاية. وقضيت عطلة نهاية الأسبوع لجعل سير العمل أكثر سلاسة. كل هذه التعديلات على الأداء تنتقل أيضًا إلى الأجهزة العادية. شعرت بتقليل وقت الإطلاق من 5 ثوان إلى 2x على Raspberry Pi قفزة لا تصدق. أصبح هذا الإصلاح أيضًا قفزة من 0.5 ثانية إلى 0.2 ، أو شيء من هذا القبيل. لا يزال هذا ملحوظًا جدًا للمستخدم. وقت البدء 0.5 ثانية قصير بما يكفي لتفويت هذه الحقيقة أثناء التطوير ، ولكن من الواضح أن الانخفاض إلى 0.2 يبدو أسرع بكثير.

المستخدمون : الرجاء الشكوى من البرامج البطيئة. في ساحة 2016 ( ... - تقريبًا لكل. ). نحمل أجهزة الكمبيوتر العملاقة في جيوبنا. من غير المقبول أن تكون البرامج بطيئة.

المطورين : الأداء مهم. مسائل الذاكرة. لا يهمني أنك الفتاة الأكثر جاذبية على حلبة الرقص ، سلاك. أغلق لك بمجرد أن أغادر المكتب. أحذفك من الكمبيوتر بمجرد أن تتاح لي الفرصة. البطء خطأ. أسرع برنامج هو برنامج لا تقوم بتشغيله. لذا توقف عن تضمين Chrome بالكامل في تطبيقك.

وجميع مطوري الويب: تعلم C أو Rust أو شيء من هذا القبيل. تعمل برامجك على جهاز كمبيوتر . حتى تعرف كيف يعمل الكمبيوتر ، محكوم عليك. والخروج من حديقي حتى تكتشف! * قبضة تهز *

ونعم اقرأ عن أزمة مواقع السمنة ( ترجمة على هبر ). هذا مضحك جدا. ومحزن للغاية. وحيوي للغاية.

تحرير: تستخدم Spotify في الواقع إطار عمل Chromium Embedded Framework بدلاً من التشغيل من خلال Electron. لكنه لا يزال يدمج الكروم. لم أكن أعرف عن هذا عندما كتبت المقالة ، لكنني لا أزيل كلماتي عن الأداء النهائي.

Source: https://habr.com/ru/post/ar427211/


All Articles