Cloudflareá Mozillaá Facebook ááŸáá·áº Bloomberg ááá¯á·á០á¡ááºáá»ááºáá®áá¬áá»á¬áž
á
ááºážáááºááŒááºážáááº
BinaryAST ááœáẠááá±ááŒá®ááŒá
áºáááºá
JavaScript ááá¯áá¯ááºáá±á¬ááºáá±á¬á¡áá«á áá¯ááºáááœáá·áºááŒááºážááŸáá·áºááœá²ááŒááºážá áááºááŒá¬ááŒááºážá¡ááá·áºááœááºá¡áá»áááºáá»á¬ážá áœá¬ááá¯á¡áá¯á¶ážááŒá¯áááºá áá°ááŒáá¯ááºáá»á¬ážáá±á¬ááá¯ááºáá»á¬ážá áœá¬ááœááºáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬ JavaScript ááá¬áááẠ10 MB (á¥ááá¬á LinkedIn á¡ááœáẠ- 7.2 MBá Facebook - 7.1 MBá Gmail - 3.9 MB) ááá¯ááá·áºááœááºážá ááºážá á¬ážááŒááºážááŒáá·áº JavaScript á áááŠážáá¯ááºáá±á¬ááºááŸá¯ááẠáááá¬áááºááŸá¬ážáá±á¬ááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠááŒá áºáá±á«áºá á±áá«áááºá áá¯ááºááá¯ááœáá·áºáá¬ážáá±á¬ááŒá±á¬áá·áº ááá±á¬ááºáá¬áááºááŒááºážááŸá ááœá²ááŒááºážá áááºááŒá¬ááá·áºá¡ááá·áºááẠááŸá±ážááœá±ážááœá¬ážááẠ(áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡áá¯á¶ážáááºááŒááºážáá²á·ááá¯á·áá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡áá¯á¶ážáááºááŒááºážáá²á·ááá¯á·áá±á¬ ááá±á¬ááºáá¬ááœáẠAST ááᯠá¡ááŒáá·áºá¡ááááºáá±á¬ááºááá¯ááºá áœááºážáááŸáááŒááºážááŒá±á¬áá·áºáááºáž ááŸá±ážááœá±ážááœá¬ážáá«áááºá áááºááŸáááŒááºá ááºáá»á¬ážááá¯ááœá²ááŒááºážá áááºááŒá¬áááºáá»á±á¬ááºáá¯á¶ážáá±áá±á¬á¡áá»ááºá¡áááºáá»á¬áž)á
áááºážááá¯á·ááẠáá¯ááºááᯠá¡áááá·áºáá¯á¶ážááŸáá·áº áá»á¯á¶á·áá¬ážáá±á¬ áá¯á¶á á¶ááŒáá·áº ááŒáá·áºáá±ááŒááºážááŒáá·áº ááŒá¿áá¬ááᯠáá áºá áááºáá áºááá¯ááºáž ááŒá±ááŸááºážááẠááŒáá¯ážáááºážáá±ááŒá®ážá áááºážááá¯á·ááẠááá±á¬ááºáá¬á០áá¯ááºáá¯ááºááá¯ááºáá±á¬ bytecode ááᯠááááºážáááºážááŒááºážááŒáá·áº ááŒáá¯ážáááºážáá±áá«áááºá áá±ááºáá®ááá¯ááºáá»á¬ážááœááºá áá¯ááºááᯠáááŒá¬áá á¡ááºááááºáá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áº áááºááŸáºáá»ááŒááºážááẠáá áºá áááºáá áºááá¯ááºážáᬠááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážáááºá WebAssembly ááẠááŒá±ááŸááºážáá»ááºáá áºáᯠááŒá áºááá¯ááºáááºá ááá¯á·áá±á¬áº áááºážááẠáá¯ááºááœáẠááŒááºáá¬ážá áœá¬ á á¬ááá¯ááºááẠááá¯á¡ááºááŒá®áž áááºááŸá JavaScript áá¯ááºá áá¯ááºáá±á¬ááºááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºáááºá¡ááœáẠáá±á¬ááºážá áœá¬ áááá·áºáá±á¬áºáá«á
á¡ááŒá¬ážááœá±ážáá»ááºá áá¬ááŸá¬ JavaScript script áá»á¬ážá¡á á¬áž á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ compiled bytecode áá»á¬ážááᯠáá±ážááá¯á·áááºááŒá áºáá±á¬áºáááºážá ááŒááºáá០bytecode áá»á¬ážááẠá¡áááºááŒá¯áááºáááºáá²áá±á¬ááŒá±á¬áá·áºá áááºážáááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááŸá¯ááẠWeb stratification ááá¯ááŒá áºáá±á«áºá á±ááá¯ááºáááºá á¡ááá¯áá¯á¶ááŒá¯á¶áá±ážá¡áá¹ááá¬ááºáá»á¬áž áá±á«áºáá±á«ááºáá¬áᬠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááá¯á·ááŒá±á¬áá·áº áááºážááᯠááá·áºááœááºáá«áááºá universal bytecode áá±á¬áºáááºáá áºáᯠááá¯á¡ááºáááºá
BinaryAST ááẠááá·áºá¡á¬áž bytecode á¡áá áºááááºáá®ážáá² JavaScript áá¬áá¬á áá¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážáááŸááá² ááá·áºáááºááŸááá¯ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº áá±ážááá¯á·ááŸá¯áá¯á¶á á¶ááŸáá·áº á¡á¶áááºááœááºáá»ááŒá áºá á±áááºá BinaryAST áá±á¬áºáááºááŸá áá±áá¬á¡ááœááºá¡á á¬ážááẠáá»á¯á¶á·áá¬ážáá±á¬ minified JavaScript áá¯ááºááŸáá·áº ááŸáá¯ááºážááŸááºááá¯ááºááŒá®áž á¡áááºážá¡ááŒá áºá á¬áá¬ážááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡ááá·áºááᯠáááºááŸá¬ážááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºááŸá¯á¡ááŒááºááŸá¯ááºážááẠáááááá¬áᬠááá¯ážáá¬áá«áááºá ááá¯á·á¡ááŒááºá áá±á¬áºáááºááẠáá±áá¬á¡á¬ážáá¯á¶ážááᯠááŒá®ážááŒá±á¬ááºááẠáá á±á¬áá·áºááá¯ááºážáá² BinaryAST ááᯠáááºáá¬ážáá±á¬ááŒá±á¬áá·áº ááá¯ááºáá¯ááºááᯠá á¯á ááºážááœáá·áºááŒá¯áááºá ááá¯á·á¡ááŒááºá áá¬áá¬áááºááŒááºážááœáẠááœá²ááŒááºážá áááºááŒá¬ááŒááºážááẠááá·áºá¡á¬áž ááŒááºáá±ážáá¬ážáá±á¬ BinaryAST ááá¯ááºá á¬ážááŒá¯ááŸá¯á០á¡áá¯á¶ážáááŒá¯áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº áááá¯á¡ááºáá±á¬áá¯ááºáá»á¬ážááᯠáááºáá¯ááºááá¯ááºá á±áá¬á áááºážááẠááá±á¬ááºáá¬áááºááœáẠááœá²ááŒááºážá áááºááŒá¬ááá·áºá¡áá« áááá¯á¡ááºáá±á¬á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážááŸáá·áº áá¯ááºááœáŸáá·áºááŒááºážááá¯á·ááᯠá¡áá»áááºáá¯ááºá á±áááºá
BinaryAST á á¡ááºá¹áá«áááºáá áºáá¯ááẠáá°áááºážáá¬ážááŸááºážááŸáá·áº á¡ááá¡áá»áá°áá®ááŒááºážáááŸáááá·áº áááºááá¯ááºáá±á¬ JavaScript ááᯠááŒááºáááºááá°ááá¯ááºááá·áº á áœááºážáááºáá áºáá¯ááŒá áºááŒá®áž áá±á«áá¬áá¡á áá®áá»áŸááŒá®áž ááœá²ááŒá¬ážáá±á¬á¡áááºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážáá«áááºááẠ(BinaryAST ááẠá¡áááºáá»á¬ážááᯠááááºážáááºážáá¬ážáá±á¬áºáááºáž áá¬áá°ážáá»á¬ážááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááááºážáááºážáá«á áá¯ááºá áá±á¬áºáááºááŸáá·áº ááŸááºáá»ááºáá»á¬áž)á á¡ááŒáœá±á á±á·áá¡ááŒá¬ážáá áºáááºááœáẠááá¯ááºááá¯ááºááŸá¯ vector áá»á¬ážá¡áá áºáá±á«áºáá±á«ááºáá¬áá±á¬áºáááºáž developer áá»á¬ážá¡ááá¯á¡áá áááºážááá¯á·ááẠbytecode ááŒáá·áºáá±ááŸá¯áá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážáááºážáááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá«ááẠááá¯ááá¯áá±ážáááºááŒá®áž ááááºážáá»á¯ááºááá¯ááºáááºááŒá áºáááºá
facebook.com áá¯ááºá á
ááºážáááºáá»ááºáá»á¬ážá¡á JavaScript ááᯠááœá²ááŒááºážá
áááºááŒá¬ááŒááºážááẠCPU á¡áááºážá¡ááŒá
áºáá»á¬ážá 10-15% ááᯠáá¯á¶ážá
áœá²ááŒá®áž JIT á¡ááœáẠbytecode ááŸáá·áº áááŠážáá¯ááºáá¯ááºáá¯ááºááŒááºážááẠá¡áá»áááºááá¯ááŒá¬ááŒá±á¬ááºáž ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯ááŒááá²á·áááºá SpiderMonkey á¡ááºáá»ááºááœáẠAST ááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážáááºáá±á¬ááºááẠá¡áá»áááºááẠ500-800 ms ááŒá¬ááŒáá·áºááŒá®áž BinaryAST ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠá€ááááºážááááºážá¡á¬áž 70-90% áá»áŸá±á¬á·áá»áá²á·áááºá
áá±áá¯áá»á¡á¬ážááŒáá·áºá áááºáá®ážááŸá°ážáá®ážáááºážá¡áá»á¬ážá
á¯á¡ááœáẠBinaryAST ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá«á ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááœááºážáá¶ááŒááºážáááŸááá²áá¯ááºááœáẠJavaScript ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡áá»áááºááᯠ3-10% ááŸáá·áº á¡áá¯á¶ážáááŒá¯áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá»á
áºáá»á°ááŸá¯ááá·áºáá¯ááºááá¯ááœáá·áºáá¬ážááá·áºá¡áá« 90-97% ááŒáá·áº áá»áŸá±á¬á·áá»áááºá
1.2 MB JavaScript á
ááºážáááºááŸá¯á¡á
á¯á¶ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« BinaryAST ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºá
áºáá±á¬á·á
áá
Ạ(Intel i338) ááœáẠ314 á០7 ms á០á
áááºáá»áááºááᯠá¡ááŸáááºááŒáŸáá·áºáááºááŸáá·áº 2019 á០1455 ms ááá¯ááá¯ááºážá
ááºáá
á¹á
ááºáž (HTC One M8) ááœáẠá¡ááŸáááºááŒáŸáá·áºááá¯ááºá
á±áá²á·áááºá
source: opennet.ru