์ฑ ์ค ํ๋์์ Ember v3.17.0 ๋ฆด๋ฆฌ์ค๋ก ์ธํด ์์ฐ ํฌ๊ธฐ๊ฐ ํฌ๊ฒ ์ฆ๊ฐํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
/ cc @pzuraq @rwjblue
์๋ก์ด ๋ถ์จ ํ๋ก์ ํธ์์ ํ์ธํ ์ ์์ต๋๋ค.
__2.16.0__
__2.17.0__
์ผ๋ถ ๊ณต๊ธ ์ ์ฒด์ ์ฐจ์ด์ ์ํ๊ณ ์ฝ๊ฐ ํฌ๋ฏธํ ๋น-VM ์ ๋ฐ์ดํธ ์์ ์ํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค https://github.com/glimmerjs/glimmer-vm/commit/4c56c216465410f5bd6f4f53fb7d4508f8048f09#diff ๋ฅผ ํตํด -64c3cabffb164d9a2c4bf2d427094e19 https://github.com/emberjs/ ember.js / commit / 699439c0aaa1917754490efeb5751d10f77e5230
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
2.16.3
2.17.0
๋ํ ํตํฉ ํ ์คํธ์์ 2.16.3์์ 2.17.0์ผ๋ก ์ฑ๋ฅ์ด ~ 5 % ์ ํ๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
PS @ Turbo87 - HBS minifier ๋๋ฌธ์ผ๊น์? ๋๋ ๋ํ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ ๋ฐ์ดํธ ๋ Glimmer VM์ ์ํด ์์ฑ ๋ ์ ํ ํ๋ฆฟ์ ๋ํด ์ด๋ป๊ฒ ๋ "์์"๋ ์ ์์ต๋๊น?
@ boris-petrov-์ฐ๋ฆฌ๋ฅผ ์ํด ๊ทธ๊ฒ์ ํ์ธํ๋ ๋ง์? ์ฑ package.json
์์ minifier๋ฅผ ์ ๊ฑฐ ํ ์ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค ...
์ด๊ฒ์ ํ ํ๋ฆฟ ํฌ๊ธฐ๋ฅผ ์ฝ๊ฐ ๋ถ ํ๋ฆฌ๋ ํฌ๋ฏธํ ์์ด์ด ํ์์ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๊ฒ ๊ฐ์ต๋๋ค. ํนํ ์ฑ์์ diff๋ฅผ ์ํํ๋ ๊ฒ์ 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)
const enum ๋ฌธ์์ด์ ์ซ์๋ก
- 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
}
}
ํจ์น๋ ๋ด๊ฐ ๊ฐ์ง ๋๋ถ๋ถ์ ๋ฎ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ ์์ด๋์ด๋ฅผ ๋ํ๋ ๋๋ค. ๋ช ๊ฐ์ง ์์ด๋์ด๊ฐ ๋ ์์ง๋ง ์ง๊ธ๊น์ง์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋๋จธ์ง ํ๊ท๋ฅผ ๋ณต๊ตฌํ์ง๋ ์์ ๊ฒ์ ๋๋ค. ํ๊ท๋ฅผ ์ผ์ผํจ ๋ฆฌํฉํฐ๋ง์ ํฌ๊ณ ๋ฏธ๋์ ๋ฐฉํฅ์ ๊ฐ๋ฅํ๊ฒํ์ผ๋ฉฐ ์๊ฐ์ด ์ ํ๋์ด ์์ต๋๋ค.
๊ฐ๋จํ ์์ด๋์ด๊ฐ 2 ๊ฐ ๋ ์์ต๋๋ค. ๋ณํฉ [Append, 1 | 0, ...]์ [TrustingAppend | Append, ..] ๊ทธ๋ฐ ๋ค์ 1์ ์ฌ์ฉํ ์์๋ ๋ถ์ธ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ์์ด์ด ํ์ ํํ์ด ์์ต๋๋ค. ๋์ 0.
FYI- https: //github.com/emberjs/ember.js/pull/18941์ 3.16์ ๋นํด ๋๋ถ๋ถ์ ์ฑ์ฅ์ ์ฒ๋ฆฌํฉ๋๋ค (์ฐ๋ฆฌ๊ฐ ์์ ์ค์ธ ์ฝ 3 %๋ ์ฌ์ ํ ๋ ํฌ์ง ๋ง).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
FYI- https: //github.com/emberjs/ember.js/pull/18941์ 3.16์ ๋นํด ๋๋ถ๋ถ์ ์ฑ์ฅ์ ์ฒ๋ฆฌํฉ๋๋ค (์ฐ๋ฆฌ๊ฐ ์์ ์ค์ธ ์ฝ 3 %๋ ์ฌ์ ํ ๋ ํฌ์ง ๋ง).