يبدو أن إنشاء ذاكرة التخزين المؤقت لهذا المكون الإضافي تجعل الأداء أسوأ بدلاً من تحسينه ، بدءًا من إصدار الحزمة 0.19.0.
لقد لاحظت ذلك عند ترقية البرامج النصية للبناء في شركتي لاستخدام أحدث إصدارات الحزمة لكل شيء ؛ بما في ذلك تحديث ezolenko/rollup-plugin-typescript2
من الإصدار 0.12.x إلى 0.19.2. زاد هذا من أوقات التجميع بمعامل تقريبي. 2x (من حوالي 3 ثوانٍ إلى 6-8 ثوانٍ لكل تجميع).
ظننت أنني سأشاركك تحقيقاتي الموجزة. لقد قمت بإعداد مقياس أداء صغير (انظر stakx/rollup-plugin-typescript2-benchmark
) لإثبات ذلك. من المسلم به أنه ليس معيارًا فائق الدقة ، لكنني أعتقد أنه لا يزال يُظهر أن تعيين خيار clean
إلى false
يبدو أنه يؤثر على وقت التجميع بشكل سلبي (بدلاً من تحسينه ، كما يتوقع المرء من الحصول على ذاكرة تخزين مؤقت جاهزة للاستخدام).
سأعيد إنتاج القياسات التي أخذتها أدناه ؛ انظر الريبو المرتبط لكود المعيار الفعلي.
إصدار الحزمة | تشغيل | clean: true
[مللي ثانية] | clean: false
[مللي ثانية] | clean: false
& div؛ clean: true
[٪]
: -: |: -: | -: | -: | -:
0.15.0 | 1 | 836 | 670 |
| | 2 | 840 | 638 |
| | 3 | 884 | 574 |
| | متوسط | 853 | 627 | 74٪
0.16.0 | 1 | 841 | 576 |
| | 2 | 816 | 607 |
| | 3 | 834 | 581 |
| | متوسط | 830 | 588 | 71٪
0.17.0 | 1 | 861 | 582
| | 2 | 839 | 603
| | 3 | 835 | 594
| | متوسط | 845 | 593 | 70٪
0.18.0 | 1 | 1147 | 998
| | 2 | 1192 | 882
| | 3 | 1207 | 882
| | متوسط | 1182 | 921 | 78٪
0.18.1 | 1 | 815 | 617
| | 2 | 837 | 590
| | 3 | 823 | 590
| | متوسط | 825 | 599 | 73٪
0.19.0 | 1 | 828 | 896
| | 2 | 803 | 897
| | 3 | 836 | 901
| | متوسط | 822 | 898 | 109٪
0.19.1 | 1 | 850 | 913
| | 2 | 825 | 888
| | 3 | 799 | 881
| | متوسط | 825 | 894 | 108٪
0.19.2 | 1 | 1020 * | 888
| | 2 | 816 | 902
| | 3 | 826 | 890
| | متوسط | 887 | 893 | 101٪
لاحظ كيف أدى ملء ذاكرة تخزين مؤقت ( clean: false
) إلى أوقات تجميع أسرع (حوالي 70٪ من clean: false
) حتى 0.18.1. بدءًا من 0.19.0 ، فإن clean: false
سيزيد فعليًا أوقات التجميع بحوالي. 10٪. (لاحظ أيضًا الشكل الخارجي المميز بعلامة * ، مما يجعل أداء 0.19.2 أفضل مما هو عليه بالفعل.)
هذا التباطؤ في ذاكرة التخزين المؤقت أمر مؤسف للغاية خاصة وأن clean: false
هو الافتراضي حاليًا .
(ملاحظة: أود أن أوضح أنني لا أقول أن clean: false
سيكون بحد ذاته كافيًا لزيادة سوء أداء هذا المكون الإضافي. لقد لاحظت هذا ببساطة ووجدته مثيرًا للفضول ، فقد يكون من المفيد البحث في المزيد بعناية.)
شكرًا ، سأنظر إليه في وقت ما الأسبوع المقبل على أمل. بشكل عام ، أتوقع أن يكون clean: true
أسرع قليلاً من التشغيل الأول باستخدام ذاكرة التخزين المؤقت ، وأبطأ بشكل ملحوظ من التشغيل الثاني باستخدام ذاكرة التخزين المؤقت. يبدو أنك تقارن عمليات التشغيل الأولى على نظام نظيف؟
متغير آخر للتحكم هو نسخة مطبوعة ونسخة مجمعة.
كان هناك إصلاح ، نسيته في أي إصدار ، أدى إلى إزالة إنشاء ذاكرة التخزين المؤقت تمامًا عند استخدام clean: true
، لذلك كان يتم إنجاز عمل أقل أثناء الإنشاء.
راجع للشغل ، ربما يعني ذلك إنشاء أجهزة تقوم بإجراء سحب نظيف (وهو ما يجب أن يقوم به كل تكوين نشر غير CI عاقل) قد تشهد تسريعًا قليلاً عن طريق تعطيل ذاكرة التخزين المؤقت.
يبدو أنك تقارن عمليات التشغيل الأولى على نظام نظيف؟
ينفذ معياري عمليتي تشغيل:
يتم تشغيل أول واحد بعد مسح ذاكرة التخزين المؤقت يدويًا باستخدام rimraf
. لا يتم قياس هذا المدى ، إنه موجود فقط لبناء ذاكرة تخزين مؤقت جديدة.
التشغيل الثاني (الذي يمكن أن يستفيد من ذاكرة تخزين مؤقت جديدة إذا كان clean: false
) هو الذي يتم قياسه.
حسنًا ، أراها. يبدو أنه في ذاكرة التخزين المؤقت 19.2 مفقود دائمًا لسبب ما.
طيب ثابت في الماجستير. لا يزال يتعين علي التحقق من كيفية تأثير الإصلاح على وضع الساعة.
في 0.19.3 على npm الآن
ممتاز! شكرا لك على الاهتمام بهذا على الفور. من الرائع رؤية المشروع تتم صيانته جيدًا. : +1:
التعليق الأكثر فائدة
في 0.19.3 على npm الآن