لاحظنا في أحد تطبيقاتنا أن إصدار Ember v3.17.0 يزيد بشكل كبير من أحجام الأصول لدينا:
@ ccpzuraqrwjblue
يمكن التأكيد في مشروع جديد جديد:
__2.16.0__
__2.17.0__
فعلت بعض بيانات الاختلاف البائعين ويبدو أن سببها بعض بصيص-VM التحديثات، على سبيل المثال https://github.com/glimmerjs/glimmer-vm/commit/4c56c216465410f5bd6f4f53fb7d4508f8048f09#diff -64c3cabffb164d9a2c4bf2d427094e19 عبر https://github.com/emberjs/ ember.js / الالتزام / 699439c0aaa1917754490efeb5751d10f77e5230
كذلك هنا.
2.16.3
2.17.0
أيضًا ، لاحظت انخفاضًا في الأداء بنسبة 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)
لقد استخدمت ، إذا كنت لا تمانع في تشغيل تطبيقاتك لإخباري بكيفية عمل التصحيح
$ 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٪ تقريبًا ، وهو ما نعمل عليه).
التعليق الأكثر فائدة
لمعلوماتك - يعالج https://github.com/emberjs/ember.js/pull/18941 الجزء الأكبر من النمو مقابل 3.16 (على الرغم من أنه لا يزال أكبر بنسبة 3٪ تقريبًا ، وهو ما نعمل عليه).