
مرحبا بالجميع! يعمل فريقنا على تطوير IDE للعمل مع واجهة برمجة تطبيقات TestMace . في أحد مقالاتنا السابقة ، أشار القراء إلى الاستهلاك العالي للغاية للذاكرة لتطبيقات الإلكترون. حسنًا ، لقد حان وقت الأرقام :) في هذه المقالة ، يقدر المؤلف استهلاك الذاكرة لتطبيقات النافذة الواحدة المكتوبة باستخدام مجموعة أدوات متنوعة. هل لديك قراءة لطيفة!
العثور على مجموعة مثالية من الأدوات لإنشاء واجهة المستخدم الرسومية ، قررت لقياس مقدار الذاكرة التي يشغلونها.
في الحقيقة ، أردت معرفة أي منها يتطلب أقل قدر من الذاكرة لبرنامج يتكون من نافذة واحدة فارغة. في هذه المقالة سأتحدث عن النتائج.
تنصل
توفر هذه المقالة معلومات حول الذاكرة التي يشغلها البرنامج عند استخدام مختلف الأدوات والأطر والمكتبات لإنشاء GUIs على Linux. تم إجراء جميع القياسات على الكمبيوتر نفسه باستخدام Ubuntu 19.04 (Disco Dingo) x86_64 باستخدام برنامج Ksysguard ، الذي يوفر بيانات حول الذاكرة الداخلية التي تستهلكها التطبيقات. لم أقم بإعادة تثبيت النظام خصيصًا للاختبار. تم تنفيذه على جهاز Ubuntu الموجود في كل مكان ، والذي تم بالفعل تثبيت حزم مختلفة عليه ، مما قد يؤثر / يشوه النتائج.
بالنسبة إلى بعض الأدوات ، قمت بإضافة قياسات تم الحصول عليها على نظام التشغيل Windows 10 ، والتي بالكاد يمكن مقارنتها بنظام Linux ، لكن من المثير للاهتمام رؤيتها.
أريد أن أشير إلى أن قياساتي ليست ذات قيمة علمية. وجود بيانات أولية أخرى ، يمكنك الحصول على نتائج مختلفة تمامًا.
ليس سهلا كما يبدو
إذن ماذا نحتاج للقياس؟ الذاكرة الافتراضية (VSZ)؟ الذاكرة المقيمة (RSS)؟ RSS الخاصة؟ RSS المشتركة؟
باختصار ، إذن ... أعتقد أنه عند مقارنة برنامجين متطابقين تم تطويرهما باستخدام مجموعات مختلفة من الأدوات ، فسيكون من الأدق قياس مقدار عملية ذاكرتها بالابتعاد. يستخدم Ksysguard اللقطات لعرض معلومات مفصلة عن الذاكرة. ومع ذلك ، منذ البداية ، في تجربتي ، استخدمت البيانات من لوحة استهلاك ذاكرة الوصول العشوائي افتراضيًا ، وعندها فقط أدركت أن عمليات الاستهجان تعطي أرقامًا أكثر دقة. لضمان اتساق البيانات ، استخدمت المعلومات من لوحة ذاكرة الوصول العشوائي الافتراضية لجميع الأدوات المعروضة في القائمة ، على الرغم من أنه على الأرجح ، باستخدام واجهة مع وصف تفصيلي لاستهلاك الذاكرة ، يمكن رؤية موقف مماثل.
إذا كان ذلك بمزيد من التفصيل ، ... ... في هذه المقالة ، ما كان لي أن أحصل على مساحة كافية لدروس حول إدارة الذاكرة في Linux ، وإلى جانب ذلك ، هناك بالفعل العديد من المواد الجديرة بالاهتمام بهذا الموضوع: ELC: ما مقدار الذاكرة التي تستخدمها التطبيقات فعلاً؟ ، / proc Filesystem ، proc - معالجة المعلومات الزائفة لنظام الملفات ، نظرة عامة على إدارة ذاكرة Linux ، إدارة الذاكرة
قائمة الأدوات ومؤشرات ذاكرتهم
ليست كلمة أكثر. وهنا نتائجي:

لقد فوجئت بشراهة Flutter ، نظرًا لأنه صُمم في الأصل كإطار لإنشاء واجهة المستخدم الرسومية للأجهزة المحمولة.UPD (شكري لـ kirbyfan64sos ): لا يزال Flutter Desktop في المراحل الأولى من التطوير ، وجميع عمليات الإنشاء قيد التصحيح. هذا يعني أن جميع ملفات التعريف (مثل Observatory) نشطة ، ويتم تمكين جميع عبارات التصحيح ، ويتم تعطيل برنامج التحويل البرمجي AoT. سيكون من المثير للاهتمام التحقق من البيانات باستخدام أداة إنشاء الإصدار.
لن أقول أنني فوجئت بأداء الإلكترون.
مع HorusUI ، كنت أتوقع رقمًا تقريبيًا يبلغ 20 ميغابايت ، لأنه يستخدم OpenGL وطريقة العرض الفوري لـ GUI. لا أفهم سبب ظهور الرقم بشكل أكبر.
كما أظهرت أطر Java Swing و JavaFX نتائج مثيرة للاهتمام. كلاهما لا يشبعان تمامًا ، وإذا لم تكن متأكدًا من أيهما سيكون مناسبًا لمشروع Java الجديد الخاص بك ، فيبدو من المعقول اختيار إطار عمل JavaFX الأكثر ملاءمة وحديثًا ، على الرغم من أنه سيتعين عليك ملء ذلك بذاكرة أكثر قليلاً. لكن إذا كانت ذاكرتك تستحق وزنها بالذهب ، فاختر Swing بالطبع.
أظهرت كيو تي أيضًا أرقامًا مثيرة للاهتمام للغاية وتبين أنها أكثر شراسة من معظم الأدوات الشائعة الأخرى. تجدر الإشارة إلى أن معظم الذاكرة التي تشغلها هي الكمية التي يستهلكها برنامج تشغيل amdgpu المثبت على نظامي. ربما يكون هذا بسبب تخزين مخازن OpenGL محليًا. يمكن رؤية الشيء نفسه باستخدام SDL2: يستهلك برنامج بدون OpenGL 1.1 ميغابايت ، ومعه يصل إلى 14 ميغابايت.
تم وضع WxWidgets و LCL في مكان جيد في هذه المقارنة. على الرغم من حقيقة أنها مغلفة على أدوات أخرى لواجهة المستخدم الرسومية ، فإن تكلفة الموارد ضئيلة. أنا معجب بفكرة إمكانية نقل الواجهة الخلفية من Gtk + ، على سبيل المثال ، إلى Qt ، وبالتالي ضمان الاستقلال عن الأدوات.
سأسلط الضوء أيضًا على Nuklear ، لأنه ببساطة ، يبدو لي أنه يحتوي على وضع عرض واجهة المستخدم الرسومية رائع جدًا. إذا لم تشعر بالارتباك من استخدام أداة إزالة إطار X11 الخام ، سيشغل تطبيق النافذة الواحدة الخاص بك فقط 0.624 ميجابايت ، وهو أمر مثير للإعجاب للغاية.
استنتاج
إذا كنت تأمل أن ترى أي استنتاجات معممة هنا ، إذن ، أخشى ، يجب أن أحبطك.