Cloudflare, Mozilla, Facebook ๋ฐ Bloomberg์ ์์ง๋์ด
์ํ์ฉ
BinaryAST๋ ์ด๋ฏธ ๋ค์์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
JavaScript๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฝ๋ ๋ก๋ ๋ฐ ๊ตฌ๋ฌธ ๋ถ์ ๋จ๊ณ์ ์๋นํ ์๊ฐ์ด ์์๋ฉ๋๋ค. ๋ง์ ์ธ๊ธฐ ์ฌ์ดํธ์์ ๋ค์ด๋ก๋๋ JavaScript์ ์์ด 10MB์ ๊ฐ๊น๋ค๋ ์ (์: LinkedIn์ ๊ฒฝ์ฐ 7.2MB, Facebook - 7.1MB, Gmail - 3.9MB)์ ๊ณ ๋ คํ๋ฉด JavaScript์ ์ด๊ธฐ ์ฒ๋ฆฌ์ ์๋นํ ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค. ์ฝ๋๊ฐ ๋ก๋๋ ๋ ์ฆ์ AST๋ฅผ ์์ ํ ๋น๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ธก์ ๊ตฌ๋ฌธ ๋ถ์ ๋จ๊ณ๋ ๋๋ ค์ง๋๋ค. ํ์ฌ ์์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํด ๋๋ฝ๋ ์ ๋ณด).
๊ทธ๋ค์ ์ฝ๋๋ฅผ ์ต์ํ๋๊ณ ์์ถ๋ ํํ๋ก ๋ฐฐํฌํ๊ณ ๋ธ๋ผ์ฐ์ ์์ ์์ฑ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ ๋ฌธ์ ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ต์ ์ฌ์ดํธ์์๋ ์ฝ๋๊ฐ ์์ฃผ ์ ๋ฐ์ดํธ๋๋ฏ๋ก ์บ์ฑ์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ถ๋ถ์ ์ผ๋ก๋ง ํด๊ฒฐ๋ฉ๋๋ค. WebAssembly๊ฐ ํด๊ฒฐ์ฑ ์ด ๋ ์ ์์ง๋ง ์ฝ๋์ ๋ช ์์ ์ธ ์ ๋ ฅ์ด ํ์ํ๋ฉฐ ๊ธฐ์กด JavaScript ์ฝ๋์ ์ฒ๋ฆฌ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์ ํฉํ์ง ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ต์ ์ JavaScript ์คํฌ๋ฆฝํธ ๋์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ปดํ์ผ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ๋ฐ์ดํธ์ฝ๋๋ ๊ฒ์ฆํ๊ธฐ ์ด๋ ต๊ณ , ์ง์ ์ฒ๋ฆฌํ๋ฉด ์น ๊ณ์ธตํ๋ก ์ด์ด์ง ์ ์๊ณ , ์ถ๊ฐ ๋ณด์ ์ํ์ด ๋ฐ์ํ๋ฉฐ, ๋ฒ์ฉ ๋ฐ์ดํธ์ฝ๋ ํ์์ด ํ์ํฉ๋๋ค.
BinaryAST๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ JavaScript ์ธ์ด๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ํ์ฌ ์ฝ๋ ๊ฐ๋ฐ ๋ฐ ์ ๋ฌ ๋ชจ๋ธ์ ๋ง์ถ ์ ์์ต๋๋ค. BinaryAST ํ์์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ ์์ถ๋ ์ถ์๋ JavaScript ์ฝ๋์ ๋น์ทํ๋ฉฐ, ์์ค ํ ์คํธ ๊ตฌ๋ฌธ ๋ถ์ ๋จ๊ณ๋ฅผ ์ ๊ฑฐํ์ฌ ์ฒ๋ฆฌ ์๋๊ฐ ๋์ ๋๊ฒ ํฅ์๋ฉ๋๋ค. ๋ํ ์ด ํ์์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ BinaryAST๊ฐ ๋ก๋๋ ๋ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ๋ํ ์๋ฒ ์ธก์์ ๊ตฌ๋ฌธ ๋ถ์์ ์ํํ๋ฉด ๋ฐํ๋ BinaryAST ํํ์์ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ๊ณผ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์ธก์์ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ ๋ถํ์ํ ํธ๋ํฝ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ ์กํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํฉ๋๋ค.
BinaryAST์ ํน์ง์ ์๋ ๋ฒ์ ๊ณผ ์์ ํ ๋์ผํ์ง๋ ์์ง๋ง ์๋ฏธ์ ๋์ผํ๊ณ ๋์ผํ ์ด๋ฆ์ ๋ณ์ ๋ฐ ํจ์๋ฅผ ํฌํจํ๋ ์ฝ๊ธฐ ๊ฐ๋ฅํ JavaScript๋ฅผ ๋ณต์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค(BinaryAST๋ ์ด๋ฆ์ ์ ์ฅํ์ง๋ง ์์น์ ๋ํ ์ ๋ณด๋ ์ ์ฅํ์ง ์์ต๋๋ค). ์ฝ๋, ์์ ๋ฐ ์ฃผ์). ๋์ ์ ๋ค๋ฅธ ์ธก๋ฉด์ ์๋ก์ด ๊ณต๊ฒฉ ๋ฒกํฐ์ ์ถํ์ด์ง๋ง ๊ฐ๋ฐ์์ ๋ฐ๋ฅด๋ฉด ๋ฐ์ดํธ์ฝ๋ ๋ฐฐํฌ์ ๊ฐ์ ๋์์ ์ฌ์ฉํ ๋๋ณด๋ค ํจ์ฌ ๋ ์๊ณ ์ ์ดํ๊ธฐ๊ฐ ๋ ์ฝ๋ค๊ณ ํฉ๋๋ค.
facebook.com ์ฝ๋ ํ
์คํธ์ ๋ฐ๋ฅด๋ฉด JavaScript ๊ตฌ๋ฌธ ๋ถ์์ CPU ๋ฆฌ์์ค์ 10-15%๋ฅผ ์๋นํ๊ณ ๊ตฌ๋ฌธ ๋ถ์์ ๋ฐ์ดํธ ์ฝ๋ ์์ฑ ๋ฐ JIT์ฉ ์ด๊ธฐ ์ฝ๋ ์์ฑ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. SpiderMonkey ์์ง์์๋ AST๋ฅผ ์์ ํ ๊ตฌ์ถํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด 500~800ms์ธ๋ฐ BinaryAST๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ์์น๊ฐ 70~90% ์ค์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ์น ๋ถ๊ฝ๋์ด์ ๊ฒฝ์ฐ BinaryAST๋ฅผ ์ฌ์ฉํ๋ฉด JavaScript ๊ตฌ๋ฌธ ๋ถ์ ์๊ฐ์ด ์ต์ ํ ์๋ ๋ชจ๋์์๋ 3~10%, ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ ๋ฌด์ ๋ชจ๋๊ฐ ํ์ฑํ๋๋ฉด 90~97% ์ ๋ ๋จ์ถ๋ฉ๋๋ค.
1.2MB JavaScript ํ
์คํธ ์ธํธ๋ฅผ ์คํํ ๋ BinaryAST๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ์๊ฐ์ด ๋ฐ์คํฌํฑ ์์คํ
(Intel i338)์์ 314ms์์ 7ms๋ก, ๋ชจ๋ฐ์ผ ์ฅ์น(HTC One M2019)์์ 1455๋
์์ 8ms๋ก ๋นจ๋ผ์ก์ต๋๋ค.
์ถ์ฒ : opennet.ru