Ember.js: РСгрСссия Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² Π² вСрсии 3.17.0

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 ΠΌΠ°Ρ€. 2020  Β·  14ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: emberjs/ember.js

Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ выпуск Ember v3.17.0 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π°ΡˆΠΈΡ… рСсурсов:

Π”ΠΎ

  • dist / assets / app.js: 613,18 ΠšΠ‘ (78,46 ΠšΠ‘ Π² сТатом Π²ΠΈΠ΄Π΅)
  • dist / assets / vendor.js: 2,34 ΠœΠ‘ (558,13 ΠšΠ‘ Π² сТатом Π²ΠΈΠ΄Π΅)

ПослС

  • dist / assets / app.js: 690,43 ΠšΠ‘ (89,22 ΠšΠ‘ Π² сТатом Π²ΠΈΠ΄Π΅)
  • dist / assets / vendor.js: 2,42 ΠœΠ‘ (572,39 ΠšΠ‘ Π² сТатом Π²ΠΈΠ΄Π΅)

/ cc @pzuraq @rwjblue

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

К Π²Π°ΡˆΠ΅ΠΌΡƒ свСдСнию - https://github.com/emberjs/ember.js/pull/18941 Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ роста ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 3,16 (хотя всС Π΅Ρ‰Π΅ Π²Ρ‹ΡˆΠ΅ Π½Π° ~ 3%, Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ).

ВсС 14 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΠΎΠ³Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π² свСТСм Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ember:

__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 / commit / 699439c0aaa1917754490efeb5751d10f77e5230

ВоТС самоС.

2.16.3

  • vendor: 886KB (213KB brotli)
  • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: 1.01MB (126KB brotli)

2.17.0

  • поставщик: 907KB (219KB brotli)
  • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: 1.15MB (137KB brotli)

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° ~ 5% Π² Π½Π°ΡˆΠΈΡ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстах ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ с 2.16.3 Π½Π° 2.17.0.

PS @ Turbo87 - ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·-Π·Π° HBS ? Π― Ρ‚ΠΎΠΆΠ΅ этим ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ. Могло Π»ΠΈ ΠΎΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Β«ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΡΡΒ» для Π½ΠΎΠ²Ρ‹Ρ… шаблонов, созданных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Glimmer?

@ boris-petrov - НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это для нас? Π― Π΄ΡƒΠΌΠ°ΡŽ, Π²Ρ‹ смоТСтС ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ· своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ package.json ...

ΠŸΠΎΡ…ΠΎΠΆΠ΅, это происходит ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² glimmer wireformat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ шаблона. Π’ частности, сравнСниС прилоТСния: 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

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

Π­ΠΌΠ±Π΅Ρ€ 3.17

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

ПослС константной строки пСрСчислСния Π΄ΠΎ числа

 - 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
  }
}

ΠŸΠ°Ρ‚Ρ‡ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠΎΠΈΡ… Π½ΠΈΠ·ΠΊΠΎ висящих Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠ΄Π΅ΠΉ. Π£ мСня Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π° ΠΈΠ΄Π΅ΠΉ, Π½ΠΎ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ рСгрСссии. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Π²Π°Π» рСгрСсс, Π±Ρ‹Π» большим ΠΈ Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ направлСния, Π° Ρƒ мСня ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π£ мСня Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ 2 простыС ΠΈΠ΄Π΅ΠΈ, ΡΠ³Π»Π°Π΄ΡŒΡ‚Π΅ [ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, 1 | 0, ...] Π² [TrustingAppend | Append, ..], Π° Π·Π°Ρ‚Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ логичСский Ρ„Π»Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 1 | 0 вмСсто этого.

К Π²Π°ΡˆΠ΅ΠΌΡƒ свСдСнию - https://github.com/emberjs/ember.js/pull/18941 Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ роста ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 3,16 (хотя всС Π΅Ρ‰Π΅ Π²Ρ‹ΡˆΠ΅ Π½Π° ~ 3%, Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ).

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ