Ember.js: تراجع حجم الأصول في الإصدار 3.17.0

تم إنشاؤها على ٥ مارس ٢٠٢٠  ·  14تعليقات  ·  مصدر: emberjs/ember.js

لاحظنا في أحد تطبيقاتنا أن إصدار Ember v3.17.0 يزيد بشكل كبير من أحجام الأصول لدينا:

قبل

  • توزيع / أصول / app.js: 613.18 كيلوبايت (78.46 كيلوبايت مضغوط)
  • التوزيع / الأصول / vendor.js: 2.34 ميجابايت (558.13 كيلوبايت مضغوط)

بعد

  • توزيع / أصول / app.js: 690.43 كيلوبايت (89.22 كيلوبايت مضغوط)
  • التوزيع / الأصول / vendor.js: 2.42 ميجابايت (572.39 كيلوبايت مضغوط)

@ ccpzuraqrwjblue

Bug Regression

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

لمعلوماتك - يعالج https://github.com/emberjs/ember.js/pull/18941 الجزء الأكبر من النمو مقابل 3.16 (على الرغم من أنه لا يزال أكبر بنسبة 3٪ تقريبًا ، وهو ما نعمل عليه).

ال 14 كومينتر

يمكن التأكيد في مشروع جديد جديد:

__2.16.0__

  • البائع: 692.58 كيلو بايت (176.09 كيلو بايت مضغوط)
  • التطبيق: 9.82 كيلوبايت (2.15 كيلوبايت مضغوط)

__2.17.0__

  • البائع: 715.12 كيلوبايت (183.64 كيلوبايت مضغوط)
  • التطبيق: 9.94 كيلو بايت (2.2 كيلو بايت مضغوط)

فعلت بعض بيانات الاختلاف البائعين ويبدو أن سببها بعض بصيص-VM التحديثات، على سبيل المثال https://github.com/glimmerjs/glimmer-vm/commit/4c56c216465410f5bd6f4f53fb7d4508f8048f09#diff -64c3cabffb164d9a2c4bf2d427094e19 عبر https://github.com/emberjs/ ember.js / الالتزام / 699439c0aaa1917754490efeb5751d10f77e5230

كذلك هنا.

2.16.3

  • البائع: 886KB (213KB brotli)
  • التطبيق: 1.01 ميجا بايت (126 كيلو بايت brotli)

2.17.0

  • البائع: 907KB (219KB brotli)
  • التطبيق: 1.15 ميجابايت (137 كيلوبايت بروتلي)

أيضًا ، لاحظت انخفاضًا في الأداء بنسبة 5٪ تقريبًا في اختبارات التكامل الخاصة بنا من 2.16.3 إلى 2.17.0.

PS @ Turbo87 - هل يمكن أن يكون بسبب المصغر HBS ؟ أنا أستخدمه أيضًا. هل يمكن أن "تتعطل" بطريقة ما للقوالب الجديدة التي تم إنشاؤها بواسطة جهاز Glimmer VM المحدث؟

@ boris-petrov - هل تمانع في التحقق من ذلك بالنسبة لنا؟ أعتقد أنه يجب أن تكون قادرًا على إزالة أداة التصغير من تطبيقاتك package.json ...

يبدو أن هذا ناتج عن التغييرات في تنسيق الأسلاك اللامع الذي يؤدي إلى تضخم أحجام القالب قليلاً. على وجه الخصوص ، إجراء فرق على التطبيق هو https://github.com/glimmerjs/glimmer-vm/blob/11cc83b2adf220bef298a1a6298c9e4e750c9fe1/packages/٪40glimmer/interfaces/lib/compile/wire-format.d.ts#L76

rwjblue - أعتقد أن krisselden صحيح - هذا لا علاقة له بـ ember-hbs-minifier . لقد جربت تطبيق Ember جديدًا مع المساعد التالي:

import Helper from '@ember/component/helper';
export default Helper.helper(() => true);

ومكونان:

other-component.hbs

{{some-component foo=1}}

some-component.hbs

{{some-helper 1 2 3 @foo}}

3.16.3 أنتجت للمكونين:

other-component.hbs :

block: "{\"symbols\":[],\"statements\":[[1,[28,\"some-component\",null,[[\"foo\"],[1]]],false],[0,\"\\n\"]],\"hasEval\":false}",

some-component.hbs :

block: "{\"symbols\":[\"@foo\"],\"statements\":[[1,[28,\"some-helper\",[1,2,3,[23,1,[]]],null],false],[0,\"\\n\"]],\"hasEval\":false}",

الشيء نفسه بالنسبة 3.17:

other-component.hbs :

block: "{\"symbols\":[],\"statements\":[[1,0,0,0,[31,2,14,[27,[26,0,\"CallHead\"],[]],null,[[\"foo\"],[1]]]],[1,1,0,0,\"\\n\"]],\"hasEval\":false,\"upvars\":[\"some-component\"]}",

some-component.hbs :

block: "{\"symbols\":[\"@foo\"],\"statements\":[[1,0,0,0,[31,2,11,[27,[26,0,\"CallHead\"],[]],[1,2,3,[27,[24,1],[]]],null]],[1,1,0,0,\"\\n\"]],\"hasEval\":false,\"upvars\":[\"some-helper\"]}",

لن أسمي هذا "خطأ" ، إنه ليس لطيفًا جدًا. كلما زاد حجم التطبيق لديك ، زاد حجم القوالب.

يبدو أن التغيير في تنسيق الأسلاك مرتبط بالعمل المنجز هنا: https://github.com/glimmerjs/glimmer-vm/pull/972

إمبر 3.16.1

- dist/assets/ember-observer.js: 706.89 KB (66.89 KB gzipped)

إمبر 3.17.1

 - dist/assets/ember-observer.js: 743.7 KB (69.63 KB gzipped)

بعد const تعداد سلسلة إلى رقم

 - dist/assets/ember-observer.js: 739.58 KB (69.44 KB gzipped)

إزالة البيانات المحلية

 - dist/assets/ember-observer.js: 723.55 KB (68.06 KB gzipped)

تسطيح تعبيرات Get + GetPath + GetContextualFree

- dist/assets/ember-observer.js: 721.99 KB (68.04 KB gzipped)

لقد استخدمت ، إذا كنت لا تمانع في تشغيل تطبيقاتك لإخباري بكيفية عمل التصحيح

https://www.npmjs.com/package/ember-template-size

$ npx ember-template-size .
npx: installed 11 in 1.766s
{
  '3.16.3': {
    version: '3.16.3',
    original: 793656,
    compiled: 1223295,
    brotli: 242598,
    gzip: 242606
  },
  '3.17.0-patched': {
    version: '3.17.0-patched',
    original: 793656,
    compiled: 1299096,
    brotli: 258803,
    gzip: 258826
  },
  '3.17.0': {
    version: '3.17.0',
    original: 793656,
    compiled: 1624741,
    brotli: 294760,
    gzip: 294780
  }
}

و https://github.com/rust-lang/crates.io :

{
  '3.16.3': {
    version: '3.16.3',
    original: 73613,
    compiled: 143264,
    brotli: 32477,
    gzip: 32608
  },
  '3.17.0-patched': {
    version: '3.17.0-patched',
    original: 73613,
    compiled: 160526,
    brotli: 34663,
    gzip: 34803
  },
  '3.17.0': {
    version: '3.17.0',
    original: 73613,
    compiled: 183711,
    brotli: 36903,
    gzip: 37070
  }
}

لنا:

{
  '3.16.3': {
    version: '3.16.3',
    original: 281240,
    compiled: 450040,
    brotli: 98120,
    gzip: 98142
  },
  '3.17.0-patched': {
    version: '3.17.0-patched',
    original: 281240,
    compiled: 494042,
    brotli: 105152,
    gzip: 105178
  },
  '3.17.0': {
    version: '3.17.0',
    original: 281240,
    compiled: 596287,
    brotli: 117757,
    gzip: 117784
  }
}

يمثل التصحيح معظم أفكار الفاكهة المعلقة المنخفضة التي لدي. لديّ فكرتان أخريان ، لكن بناءً على النتائج حتى الآن ، لن أستعيد بقية الانحدار. كان مُعاد البناء الذي تسبب في الانحدار كبيرًا ويتيح بعض الاتجاهات المستقبلية ولدي وقت محدود.

لدي فكرتان أكثر بساطة ، يتم تسويتها [ملحق ، 1 | 0 ، ...] في [TrustingAppend | Append، ..] ثم هناك مجموعة سلكية تستخدم علامة منطقية يمكنها استخدام 1 | 0 بدلاً من ذلك.

لمعلوماتك - يعالج https://github.com/emberjs/ember.js/pull/18941 الجزء الأكبر من النمو مقابل 3.16 (على الرغم من أنه لا يزال أكبر بنسبة 3٪ تقريبًا ، وهو ما نعمل عليه).

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