Rollup-plugin-typescript2: ذاكرة التخزين المؤقت تجعل التجميع أبطأ بدلاً من أسرع في الإصدارات الحديثة (بدءًا من 0.19.0)؟

تم إنشاؤها على ١٥ فبراير ٢٠١٩  ·  6تعليقات  ·  مصدر: ezolenko/rollup-plugin-typescript2

يبدو أن إنشاء ذاكرة التخزين المؤقت لهذا المكون الإضافي تجعل الأداء أسوأ بدلاً من تحسينه ، بدءًا من إصدار الحزمة 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 سيكون بحد ذاته كافيًا لزيادة سوء أداء هذا المكون الإضافي. لقد لاحظت هذا ببساطة ووجدته مثيرًا للفضول ، فقد يكون من المفيد البحث في المزيد بعناية.)

bug

التعليق الأكثر فائدة

في 0.19.3 على npm الآن

ال 6 كومينتر

شكرًا ، سأنظر إليه في وقت ما الأسبوع المقبل على أمل. بشكل عام ، أتوقع أن يكون clean: true أسرع قليلاً من التشغيل الأول باستخدام ذاكرة التخزين المؤقت ، وأبطأ بشكل ملحوظ من التشغيل الثاني باستخدام ذاكرة التخزين المؤقت. يبدو أنك تقارن عمليات التشغيل الأولى على نظام نظيف؟

متغير آخر للتحكم هو نسخة مطبوعة ونسخة مجمعة.

كان هناك إصلاح ، نسيته في أي إصدار ، أدى إلى إزالة إنشاء ذاكرة التخزين المؤقت تمامًا عند استخدام clean: true ، لذلك كان يتم إنجاز عمل أقل أثناء الإنشاء.

راجع للشغل ، ربما يعني ذلك إنشاء أجهزة تقوم بإجراء سحب نظيف (وهو ما يجب أن يقوم به كل تكوين نشر غير CI عاقل) قد تشهد تسريعًا قليلاً عن طريق تعطيل ذاكرة التخزين المؤقت.

يبدو أنك تقارن عمليات التشغيل الأولى على نظام نظيف؟

ينفذ معياري عمليتي تشغيل:

  • يتم تشغيل أول واحد بعد مسح ذاكرة التخزين المؤقت يدويًا باستخدام rimraf . لا يتم قياس هذا المدى ، إنه موجود فقط لبناء ذاكرة تخزين مؤقت جديدة.

  • التشغيل الثاني (الذي يمكن أن يستفيد من ذاكرة تخزين مؤقت جديدة إذا كان clean: false ) هو الذي يتم قياسه.

حسنًا ، أراها. يبدو أنه في ذاكرة التخزين المؤقت 19.2 مفقود دائمًا لسبب ما.

طيب ثابت في الماجستير. لا يزال يتعين علي التحقق من كيفية تأثير الإصلاح على وضع الساعة.

في 0.19.3 على npm الآن

ممتاز! شكرا لك على الاهتمام بهذا على الفور. من الرائع رؤية المشروع تتم صيانته جيدًا. : +1:

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات