{"id":283058,"date":"2016-12-26T16:00:08","date_gmt":"2016-12-26T13:00:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=283058"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=283058","title":{"rendered":"\u041f\u0440\u0430\u0432\u0434\u0430 \u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 JavaScript-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a99\/0aa\/d96\/a990aad96e82fa731e5709d47bfd3b81.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e JavaScript \u2014 \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u043b \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u0441\u0435\u0439 \u0441\u0432\u043e\u0435\u0439 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044f\u0437\u044b\u043a\u0430 JavaScript \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0432\u0430\u0448 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043d\u0438\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435\u0434\u0435\u043b\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 JavaScript \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0435\u0433\u043e\u0434\u043d\u044f JavaScript \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0432 \u0432\u0435\u0431\u0435, \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439\/\u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0444\u0435\u0440\u0435 (\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Node.js), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 JavaScript \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d? \u0411\u043e\u044e\u0441\u044c, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0447\u0438\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u043c\u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432\u043e\u043a\u0440\u0443\u0433 JavaScript, \u0438 \u043d\u0435\u0441\u043c\u0435\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f. \u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f\u0437\u044b\u043a \u0441\u0442\u0430\u043b \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d? \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c: \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u0431\u044b\u043b \u043b\u0438\u043d\u0433\u0432\u0430 \u0444\u0440\u0430\u043d\u043a\u0430 \u0434\u043b\u044f \u0432\u0435\u0431\u0430. \u041d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e, \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0442\u0440\u0430\u0441\u0442\u043d\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b\u0438 JavaScript. \u0415\u0441\u043b\u0438 \u043e\u0433\u043b\u044f\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434, \u0442\u043e \u0440\u043e\u0441\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 JavaScript \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 2000-\u0445. \u041a\u0430\u043a \u0440\u0430\u0437 \u0432 \u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0438 JavaScript \u043d\u0430\u0447\u0430\u043b\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438, \u0447\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u043a \u044d\u0442\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443.<\/p>\n<p>  \u0412 \u0442\u0435 \u0433\u043e\u0434\u044b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 <b>\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 JavaScript-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/b>, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Apple <a href=\"https:\/\/webkit.org\/perf\/sunspider\/sunspider.html\">SunSpider<\/a>, \u043f\u0440\u0430\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u0435\u0445 JS-\u043c\u0438\u043a\u0440\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0437\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u0438 Mozilla <a href=\"http:\/\/krakenbenchmark.mozilla.org\/\">Kraken<\/a> \u0438 Google V8. \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u0433\u0443\u0433\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0431\u044b\u043b \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d <a href=\"https:\/\/developers.google.com\/octane\">Octane<\/a>, \u0430 Apple \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 <a href=\"http:\/\/browserbench.org\/JetStream\">JetStream<\/a>. \u042d\u0442\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JavaScript \u043d\u0430 \u0442\u0430\u043a\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443, \u043a\u0430\u043a\u043e\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0435\u043a\u0430 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b. \u041e\u0442\u043c\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0442\u044b\u0441\u044f\u0447\u0435\u043a\u0440\u0430\u0442\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>&lt;script&gt;<\/code> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043d\u0446\u0435\u043c \u0441 \u0434\u044c\u044f\u0432\u043e\u043b\u043e\u043c, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u0430 \u0434\u0430\u0436\u0435 \u043f\u043e\u043e\u0449\u0440\u044f\u0435\u043c\u044b\u043c. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c91\/f24\/a80\/c91f24a8027b49729e8d454f9b98bb00.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.youtube.com\/watch?v=PvZdTZ1Nl5o\">Advanced JS performance with V8 and Web Assembly<\/a>, Chrome Developer Summit 2016, <a href=\"https:\/\/twitter.com\/s3ththompson\">@s3ththompson<\/a>. <\/i><\/p>\n<p>  \u0412 2016 \u0433\u043e\u0434\u0443 \u0432\u0441\u0435 (\u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435) JS-\u0434\u0432\u0438\u0436\u043a\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u0438 \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0448\u0443\u0441\u0442\u0440\u044b\u043c\u0438, \u043a\u0430\u043a \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 (\u0438\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0448\u0443\u0441\u0442\u0440\u044b\u043c\u0438). \u0414\u0432\u0438\u0436\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0414\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u0434\u0443\u043c\u0447\u0438\u0432\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0438\u043f\u0430\/\u0444\u043e\u0440\u043c\u044b (type\/shape) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0432\u044b\u0437\u043e\u0432\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435) \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u043c\u0435\u044e\u0449\u0435\u0439\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c\/\u0444\u043e\u0440\u043c\u0430\u043c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044d\u0442\u0438\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u0438\u043a\u0440\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 SunSpider \u0438 Kraken, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0432\u0440\u043e\u0434\u0435 Octane \u0438 JetStream. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430 JavaScript \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c \u0432\u0440\u043e\u0434\u0435 <a href=\"http:\/\/asmjs.org\/\">asm.js<\/a> \u0438 <a href=\"https:\/\/github.com\/kripken\/emscripten\">Emscripten<\/a> \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 JavaScript \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0421++-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0431\u0435\u0437\u043e \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u0442\u0435 \u043f\u043e \u0441\u0435\u0442\u0438 \u0432 <a href=\"http:\/\/beta.unity3d.com\/jonas\/AngryBots\">AngryBots<\/a>, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0432\u0440\u043e\u0434\u0435 Adobe Flash \u0438\u043b\u0438 Chrome PNaCl.<\/p>\n<p>  \u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u043c\u0438\u043a\u0440\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 JS-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438. \u041c\u043e\u0436\u0435\u0442\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e SunSpider, \u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c JavaScript \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u044b\u043b\u0430 \u0431\u044b \u0442\u0430\u043a\u043e\u0439, \u043a\u0430\u043a \u0441\u0435\u0433\u043e\u0434\u043d\u044f. <\/p>\n<p>  \u041d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0445\u0432\u0430\u043b\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043c\u043e\u043d\u0435\u0442\u044b. \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u2014 \u0431\u0443\u0434\u044c \u0442\u043e \u043c\u0438\u043a\u0440\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u2014 \u043e\u0431\u0440\u0435\u0447\u0435\u043d\u044b \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438! \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u0441 \u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u043d\u0430\u0447\u043d\u0451\u0442\u0435 \u0441 \u043d\u0438\u043c \u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u0435 (\u0438\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u0435) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0433, \u043e\u0431\u0449\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439, \u0434\u0430\u044e\u0449\u0438\u0445 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430, \u0431\u0443\u0434\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f. <\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 Octane \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0418 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (distribution of time) \u0432 Octane \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f Octane \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u043c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0434\u043b\u044f Node.js). <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f85\/88c\/462\/f8588c4626e54dab82ae91e7aab07928.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/youtu.be\/xCx4uC7mn6Y\">Real-World JavaScript Performance<\/a>, \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f BlinkOn 6, <a href=\"https:\/\/twitter.com\/tverwaes\">@tverwaes<\/a>. <\/i><\/p>\n<p>  \u041f\u043e \u043c\u0435\u0440\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JavaScript, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 JetStream \u0438 Octane, \u043f\u043e\u0445\u043e\u0436\u0435, \u0441\u0435\u0431\u044f \u0438\u0437\u0436\u0438\u043b\u0438, \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0443\u0442\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 V8 \u0438 Chrome \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0430 \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0441\u0430\u0439\u0442\u043e\u0432: \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0438 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Octane \u0431\u043e\u043b\u0435\u0435 70 % \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 JavaScript \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 JavaScript \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 30 % \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u2014 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 5 %. \u0417\u0430\u0442\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043a\u0430\u0436\u0435\u0448\u044c \u043e\u0431 Octane. \u0422\u0430\u043a \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u043f\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f JavaScript \u0434\u0430\u0434\u0443\u0442 \u0432\u0430\u043c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u043e\u043f\u0443\u0433\u0430\u0435\u0432 \u0432 Octane, \u043d\u043e \u0441\u0430\u0439\u0442\u044b \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u0438\u0447\u0451\u043c \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f JavaScript \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430\u0432\u0440\u0435\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 \u0438\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0447\u0442\u043e \u0443\u0434\u043b\u0438\u043d\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, IC \u0438 Runtime.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f65\/f5d\/485\/f65f5d485ad841b3b2959878ca40eb33.png\"\/><\/p>\n<p>  \u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f JavaScript <b>\u0438<\/b> DOM: <a href=\"http:\/\/browserbench.org\/Speedometer\">Speedometer<\/a>. \u041e\u043d \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044e \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"http:\/\/todomvc.com\/\">TodoMVC<\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u0435\u0431-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445 (\u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043e\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e, \u043d\u043e \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f). \u0412 \u043f\u0430\u043a\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b (angular, ember, react, vanilla, flight \u0438 backbone). \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c Speedometer \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u043d\u0430 \u0440\u043e\u043b\u044c \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 2016 \u0433\u043e\u0434\u0430, \u0438 \u0432\u0441\u0451 \u0443\u0436\u0435 \u043c\u043e\u0433\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0432 \u0432\u0435\u0431\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043c IC-\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/twitter.com\/bmeurer\/status\/806927160300556288\">\u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440<\/a>). \u0425\u043e\u0442\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0441\u0430\u0439\u0442\u043e\u0432, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u0438\u043a\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0440\u043e\u043b\u044c \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 Node.js-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/16d\/fc4\/42a\/16dfc442aa1342e4b9a643f3a4821ff5.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/youtu.be\/xCx4uC7mn6Y\">Real-World JavaScript Performance<\/a>, \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f BlinkOn 6, <a href=\"https:\/\/twitter.com\/tverwaes\">@tverwaes<\/a>.<\/i> <\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0441\u0451 \u044d\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043b\u0438\u0448\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043c\u044b\u0441\u043b\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0434\u043b\u044f JS-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u0438\u043a\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a JS-\u0434\u0432\u0438\u0436\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435.<\/p>\n<h1>\u041f\u0435\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441 SunSpider<\/h1>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 JS-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445 \u0431\u044b\u043b\u0430 \u0431\u044b \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u0435\u0437 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c SunSpider. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0442\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0447\u044c\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430: <a href=\"https:\/\/github.com\/WebKit\/webkit\/blob\/master\/PerformanceTests\/SunSpider\/tests\/sunspider-1.0.2\/bitops-bitwise-and.js\">bitops-bitwise-and.js<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5bf\/986\/bcf\/5bf986bcf3ab46048a21a914fcee0355.png\"\/><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u043e\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0418 (bitwise AND), \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u0434\u0435, \u0442\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c (transpile) \u0438\u0437 C\/C++ \u0432 JavaScript. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0435\u0441\u0442\u044c \u0434\u0435\u043b\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0418 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u0434\u0432\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430 bitwiseAndValue \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e 0 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 599 999 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u0442\u0435 \u044d\u0442\u043e \u0441 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 5 \u043c\u0441 \u043d\u0430 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0433\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D1%81%D1%89%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0\">\u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430<\/a>). \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 JavaScript \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c: <\/p>\n<ul>\n<li>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 <code>bitwiseAndValue<\/code> \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430, <\/li>\n<li>\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/li>\n<\/ul>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0438 \u0440\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b \u043d\u0430 \u0432\u0441\u0451, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0435\u0441\u0442 \u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 1 \u043c\u0441. \u041d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043b\u0438\u0448\u044c \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u0435\u0451 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u041a\u043e\u0440\u043e\u0447\u0435, \u0442\u0435\u0441\u0442 <a href=\"https:\/\/github.com\/WebKit\/webkit\/blob\/master\/PerformanceTests\/SunSpider\/tests\/sunspider-1.0.2\/bitops-bitwise-and.js\">bitops-bitwise-and.js<\/a> \u0431\u044b\u043b \u0445\u0443\u0434\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u2014 \u0442\u0435\u0441\u0442\u0443 <a href=\"https:\/\/github.com\/WebKit\/webkit\/blob\/master\/PerformanceTests\/SunSpider\/tests\/sunspider-1.0.2\/string-tagcloud.js\">string-tagcloud.js<\/a>. \u041f\u043e \u0441\u0443\u0442\u0438, \u043e\u043d \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u043d\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e\u043b\u0438\u0444\u0438\u043b\u043b\u0430 <code>json.js<\/code>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0442\u0440\u0430\u0442\u0438\u0442 \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>eval<\/code> (\u0434\u043e 20 % \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0435\u0449\u0451 \u0434\u043e 10 % \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c5e\/354\/987\/c5e354987aee47949da8266c8f6cad68.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435: <code>eval<\/code> \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f JSON-\u0441\u0442\u0440\u043e\u043a\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 2501 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 <code>tag<\/code> \u0438 <code>popularity<\/code>:<\/p>\n<pre><code class=\"javascript\"> ([   {     &quot;tag&quot;: &quot;titillation&quot;,     &quot;popularity&quot;: 4294967296   },   {     &quot;tag&quot;: &quot;foamless&quot;,     &quot;popularity&quot;: 1257718401   },   {     &quot;tag&quot;: &quot;snarler&quot;,     &quot;popularity&quot;: 613166183   },   {     &quot;tag&quot;: &quot;multangularness&quot;,     &quot;popularity&quot;: 368304452   },   {     &quot;tag&quot;: &quot;Fesapo unventurous&quot;,     &quot;popularity&quot;: 248026512   },   {     &quot;tag&quot;: &quot;esthesioblast&quot;,     &quot;popularity&quot;: 179556755   },   {     &quot;tag&quot;: &quot;echeneidoid&quot;,     &quot;popularity&quot;: 136641578   },   {     &quot;tag&quot;: &quot;embryoctony&quot;,     &quot;popularity&quot;: 107852576   },   ... ])<\/code><\/pre>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u044d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0437\u0430\u0442\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c. \u0413\u043e\u0440\u0430\u0437\u0434\u043e \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 JSON \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0433\u0440\u0430\u0444. \u0427\u0442\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>eval<\/code> \u043a\u0430\u043a JSON \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 JSON (\u043f\u0440\u0430\u0432\u0434\u0430, \u0434\u043b\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u043e\u0431\u043e\u043a \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f). \u0412 2007 \u0433\u043e\u0434\u0443 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u0441\u043e\u0448\u043b\u043e \u0431\u044b \u0434\u0430\u0436\u0435 \u0437\u0430 \u043f\u043b\u043e\u0445\u043e\u0439 \u0445\u0430\u043a, \u0432\u0435\u0434\u044c \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-json.parse\">JSON.parse<\/a>. \u0410 \u043a 2017-\u043c\u0443 \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433 \u0432 JavaScript-\u0434\u0432\u0438\u0436\u043a\u0435, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>eval<\/code>. \u041f\u043e \u0441\u0443\u0442\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0434\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e JavaScript<\/p>\n<pre><code class=\"javascript\">--- string-tagcloud.js.ORIG     2016-12-14 09:00:52.869887104 +0100 +++ string-tagcloud.js  2016-12-14 09:01:01.033944051 +0100 @@ -198,7 +198,7 @@                      replace(\/&quot;[^&quot;\\\\\\n\\r]*&quot;|true|false|null|-?\\d+(?:\\.\\d*)?(:?[eE][+\\-]?\\d+)?\/g, ']').                      replace(\/(?:^|:|,)(?:\\s*\\[)+\/g, ''))) {  -                j = eval('(' + this + ')'); +                j = JSON.parse(this);                   return typeof filter === 'function' ? walk('', j) : j;              }<\/code><\/pre>\n<p>  \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438: \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c runtime \u0434\u043b\u044f V8 LKGR \u0441\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u0441 36 \u0434\u043e 26 \u043c\u0441, 30-\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435!<\/p>\n<pre><code class=\"javascript\">$ node string-tagcloud.js.ORIG Time (string-tagcloud): 36 ms. $ node string-tagcloud.js Time (string-tagcloud): 26 ms. $ node -v v8.0.0-pre $ <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0440\u044c\u0451\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>eval<\/code> \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 JSON-\u0434\u0430\u043d\u043d\u044b\u0445 (\u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438). \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e \u0432\u0441\u0451\u043c \u043a\u043e\u0434\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u044f\u0442\u044c \u043b\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-json.parse\">JSON.parse<\/a>. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 <code>eval<\/code> \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 JSON \u0432 production \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0446\u0435\u043d\u0435\u043d\u043e \u043a\u0430\u043a \u0431\u0430\u0433! \u0422\u0430\u043a \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0434\u0440\u0435\u0432\u043d\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0443\u0441\u0438\u043b\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043f\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>eval<\/code> \u0438\u0437\u043b\u0438\u0448\u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 <code>string-tagcloud.js<\/code>.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u2014 <a href=\"https:\/\/github.com\/WebKit\/webkit\/blob\/master\/PerformanceTests\/SunSpider\/tests\/sunspider-1.0.2\/3d-cube.js\">3d-cube.js<\/a>. \u042d\u0442\u043e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0443\u043c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c. \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0442\u0440\u0430\u0442\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Loop \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0435\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b80\/c69\/f00\/b80c69f000c649299c0b67d1ca1bcabe.png\"\/><\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>RotateX<\/code>, <code>RotateY<\/code> \u0438 <code>RotateZ<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c-\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 <code>Phi<\/code>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2c0\/1eb\/fa1\/2c01ebfa1b9b48d3ba01232852524d6f.png\"\/><\/p>\n<p>  \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043e\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-math.sin\">Math.sin<\/a> \u0438 <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-math.cos\">Math.cos<\/a>, \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e 204 \u0440\u0430\u0437\u0430. \u0415\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>0,017453292519943295<\/li>\n<li>0,05235987755982989<\/li>\n<li>0,08726646259971647<\/li>\n<\/ul>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0438\u043d\u0443\u0441\u0430 \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u0430, \u043c\u043e\u0436\u043d\u043e \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0420\u0430\u043d\u044c\u0448\u0435 V8 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u043b, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0442\u0430\u043a \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440. \u041c\u044b \u0443\u0431\u0440\u0430\u043b\u0438 \u0438\u0437 V8 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <b>\u0442\u0440\u0430\u043d\u0441\u0446\u0435\u043d\u0434\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0435\u0448<\/b>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0433\u043e \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u0430 \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u043d\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0448\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u041c\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 SunSpider, \u0443\u0431\u0440\u0430\u0432 \u044d\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u0443\u0434\u0448\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/1de\/195\/80a\/1de19580ab5d424e9ded99e087cbb13b.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/arewefastyet.com\/#machine=12&amp;view=single&amp;suite=ss&amp;subtest=cube&amp;start=1343350217&amp;end=1415382608\">arewefastyet.com<\/a>. <\/i><\/p>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u2014 \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0441\u0438\u043d\u0443\u0441\u043e\u043c\/\u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u043c \u2014 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u0430 (inlining heuristic), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u0447\u043a\u0430\u0445 \u0432\u044b\u0437\u043e\u0432\u0430, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 (constant folding) (\u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <code>RotateX<\/code>, <code>RotateY<\/code> \u0438 <code>RotateZ<\/code>). \u041d\u043e \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Crankshaft. \u0417\u0430\u0442\u043e \u044d\u0442\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Ignition \u0438 TurboFan, \u0438 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/docs.google.com\/document\/d\/1VoYBhpDhJC4VlqMXCKvae-8IGuheBGxy32EOgC2LnT8\">\u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<h1>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u0434\u043d\u043e\u0439<\/h1>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0443 SunSpider \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0430\u044f \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 Intel \u0434\u0432\u0438\u0436\u043e\u043a V8 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0432\u0435\u0441\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0437\u0430 200 \u043c\u0441 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0436\u0438\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043d\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430), \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c 30 \u043c\u0441. \u0418 \u043c\u044b \u0435\u0449\u0451 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0443 (incremental marking), \u0430 \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 10 % \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 SunSpider! \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u044c\u0441\u044f \u043d\u0430 10\u201420 % \u0438\u0437-\u0437\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0443\u0441\u043e\u0440\u0430, \u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f SunSpider.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c17\/381\/1d3\/c173811d3efb48d29870804e248904a9.png\"\/><\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0440\u044e\u043a\u0438, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043d\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. V8 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e: \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u0441\u0442 SunSpider \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u043c <code>&lt;iframe&gt;<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043d\u043e\u0432\u043e\u043c\u0443 <b>\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443<\/b>, \u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 <code>&lt;iframe&gt;<\/code> (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432 SunSpider \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044c\u0448\u0435 50 \u043c\u0441). \u0418 \u0442\u043e\u0433\u0434\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u0441\u0442\u0430. \u042d\u0442\u0430 \u0443\u043b\u043e\u0432\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u0432 99,99 % \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041d\u043e \u0435\u0441\u043b\u0438 V8 \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0442\u0435\u0441\u0442 SunSpider, \u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430, \u0438 \u044d\u0442\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u0422\u0430\u043a \u0447\u0442\u043e <b>\u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a SunSpider<\/b>!<\/p>\n<p>  \u042f \u043c\u043e\u0433 \u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 SunSpider, \u043d\u043e \u043d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0430\u043c \u0443\u0436\u0435 \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 SunSpider \u0440\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u0443\u043c\u0430\u044e, \u043c\u0438\u0440 \u0432\u044b\u0438\u0433\u0440\u0430\u043b \u0431\u044b \u043e\u0442 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b SunSpider \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0432\u0438\u0436\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0445\u0430\u043a\u0438, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u043d\u0430\u0432\u0440\u0435\u0434\u0438\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, SunSpider \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0441\u0441\u0435 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0441\u0442\u044b \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u0418\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0445\u0443\u0436\u0435, \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432! \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0443\u0442 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u041b\u0430\u0433\u0435\u0440\u044e Android \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b Chrome \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 SunSpider (\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043d\u044b\u043d\u0435 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445). \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u044f \u0441\u0432\u043e\u044e \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043e\u0431\u0437\u043e\u0440\u044b. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 V8, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 SunSpider. \u0410 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0434\u044b\u0440\u044b \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b\u0438 \u043f\u043e\u0444\u0438\u043a\u0441\u0435\u043d\u044b \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u041f\u0440\u0438\u0447\u0451\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 V8 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3fe\/11a\/bde\/3fe11abdea434892832cf57d6a76bacc.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Galaxy S7 and S7 Edge review: Samsung\u2019s finest get more polished, <a href=\"https:\/\/www.engadget.com\/2016\/03\/08\/galaxy-s7-and-s7-edge-review\/\">www.engadget.com<\/a>.<\/i><\/p>\n<p>  \u0415\u0441\u043b\u0438 JavaScript-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043e \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430-\u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430! \u2014 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0434\u0435\u043b. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b <a href=\"http:\/\/browserbench.org\/Speedometer\">Speedometer<\/a>.<\/p>\n<h1>\u041c\u0435\u043d\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 Kraken<\/h1>\n<p>  \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a Kraken \u0431\u044b\u043b <a href=\"https:\/\/blog.mozilla.org\/blog\/2010\/09\/14\/release-the-kraken-2\">\u0432\u044b\u043f\u0443\u0449\u0435\u043d Mozilla \u0432 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0435 2010-\u0433\u043e<\/a>. \u0417\u0430\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0438 \u044f\u0434\u0440\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u042f \u043d\u0435 \u0441\u0442\u0430\u043d\u0443 \u0443\u0434\u0435\u043b\u044f\u0442\u044c Kraken \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c JavaScript, \u043a\u0430\u043a SunSpider \u0438 Octane. \u041e\u043f\u0438\u0448\u0443 \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0442\u0435\u0441\u0442\u043e\u043c <a href=\"https:\/\/github.com\/h4writer\/arewefastyet\/blob\/master\/benchmarks\/kraken\/tests\/kraken-1.1\/audio-oscillator.js\">audio-oscillator.js<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2c0\/dc4\/d8c\/2c0dc4d8c9414b0485b79d763b20a320.png\"\/><\/p>\n<p>  \u0422\u0435\u0441\u0442 500 \u0440\u0430\u0437 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>calcOsc<\/code>. \u041e\u043d\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>generate<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u0443 <code>sine Oscillator<\/code>, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 <code>Oscillator<\/code>, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043d\u0435\u043c\u0443 generate \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a <code>sine Oscillator<\/code>. \u041d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044f\u0441\u044c \u0432 \u0434\u0435\u0442\u0430\u043b\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0435\u0442\u043e\u0434 <code>generate<\/code> \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435 <code>Oscillator<\/code>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/586\/413\/4b6\/5864134b622f4ca584e2927917409d50.png\"\/><\/p>\n<p>  \u0413\u043b\u044f\u0434\u044f \u043d\u0430 \u043a\u043e\u0434, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c, \u0438\u043b\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-math.round\">Math.round<\/a>. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 runtime <code>Oscillator.prototype.generate<\/code> \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>offset % this.waveTableLength<\/code>. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 Intel-\u043c\u0430\u0448\u0438\u043d\u0435, \u0442\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 20 % \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0442\u0440\u0430\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>idiv<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f (modulus). \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u043f\u043e\u043b\u0435 <code>waveTableLength<\/code> \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Oscillator \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2048, \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043d\u043e\u0435 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 <code>Oscillator<\/code>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/baf\/6f5\/3d0\/baf6f53d0200454abed51b8c851d6028.png\"\/><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u2014 \u044d\u0442\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0434\u0432\u043e\u0439\u043a\u0438, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/graphics.stanford.edu\/~seander\/bithacks.html#ModulusDivisionEasy\">\u043a\u0443\u0434\u0430 \u043b\u0443\u0447\u0448\u0438\u0439 \u043a\u043e\u0434<\/a> \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0430 Intel \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>idiv<\/code>. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u0441\u0435\u0433\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>calcOsc<\/code> \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443\/\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435. \u041d\u043e \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f <code>sine Oscillator<\/code>, \u043f\u043e\u043c\u0435\u0449\u0451\u043d\u043d\u043e\u0439 \u0432\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>calcOsc<\/code>.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f. \u0412 V8 \u044d\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0438\u0437\u0443\u0447\u0430\u0435\u043c \u0442\u0438\u043f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0440\u043e\u0434\u0435 <code>+<\/code>, <code>*<\/code> \u0438 <code>%<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0438\u043f\u044b \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0432\u0438\u0434\u0438\u0442, \u0438 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u043c. \u0441\u043b\u0430\u0439\u0434\u044b \u0441 \u043a\u0440\u0443\u0433\u043b\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0430 <a href=\"https:\/\/docs.google.com\/presentation\/d\/1wZVIqJMODGFYggueQySdiA3tUYuHNMcyp_PndgXsO1Y\">Fast arithmetic for dynamic languages<\/a>). <\/p>\n<p>  \u0411\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432 fullcodegen \u0438 Crankshaft, \u0430 <code>BinaryOpIC<\/code> \u0434\u043b\u044f <code>MOD<\/code> \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0434\u0432\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0417\u0430\u043f\u0443\u0441\u043a \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 V8 (c Crankshaft \u0438 fullcodegen)<\/p>\n<pre><code class=\"javascript\">$ ~\/Projects\/v8\/out\/Release\/d8 --trace-ic audio-oscillator.js [...SNIP...] [BinaryOpIC(MOD:None*None-&gt;None) =&gt; (MOD:Smi*2048-&gt;Smi) @ ~Oscillator.generate+598 at audio-oscillator.js:697] [...SNIP...] $ <\/code><\/pre>\n<p>  \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e <code>BinaryOpIC<\/code> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 (constant feedback) \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (<code>Smi<\/code> \u0432 V8), \u0438 \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>--print-opt-code --code-comments<\/code> \u043a\u043e\u0434, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e Crankshaft \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 <code>Oscillator.prototype.generate<\/code>:<\/p>\n<pre><code class=\"javascript\"> [...SNIP...]                   ;;; &lt;@80,#84&gt; load-named-field 0x133a0bdacc4a   330  8b4343         movl rax,[rbx+0x43]                   ;;; &lt;@83,#86&gt; compare-numeric-and-branch 0x133a0bdacc4d   333  3d00080000     cmp rax,0x800 0x133a0bdacc52   338  0f85ff000000   jnz 599  (0x133a0bdacd57) [...SNIP...]                   ;;; &lt;@90,#94&gt; mod-by-power-of-2-i 0x133a0bdacc5b   347  4585db         testl r11,r11 0x133a0bdacc5e   350  790f           jns 367  (0x133a0bdacc6f) 0x133a0bdacc60   352  41f7db         negl r11 0x133a0bdacc63   355  4181e3ff070000 andl r11,0x7ff 0x133a0bdacc6a   362  41f7db         negl r11 0x133a0bdacc6d   365  eb07           jmp 374  (0x133a0bdacc76) 0x133a0bdacc6f   367  4181e3ff070000 andl r11,0x7ff [...SNIP...]                   ;;; &lt;@127,#88&gt; deoptimize 0x133a0bdacd57   599  e81273cdff     call 0x133a0ba8406e [...SNIP...]<\/code><\/pre>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>this.waveTableLength<\/code> (<code>rbx<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 <code>this<\/code>), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0432\u043d\u043e 2048 (\u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 0x800). \u0415\u0441\u043b\u0438 \u0440\u0430\u0432\u043d\u043e, \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>idiv<\/code> \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0418 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0441\u043a\u043e\u0439 (<code>r11<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0439 \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>i<\/code>), \u0443\u0434\u0435\u043b\u044f\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0437\u043d\u0430\u043a\u0430 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. <\/p>\n<h1>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h1>\n<p>  \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f \u0443\u043b\u043e\u0432\u043a\u0430, \u043d\u043e, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0443\u043b\u043e\u0432\u043a\u0430\u043c\u0438, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445, \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f! \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0432\u0435\u0441\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d (\u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0434\u0432\u043e\u0439\u043a\u0438). \u041d\u0438\u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043d\u043e\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>idiv<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>BinaryOpIC<\/code> \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0437\u0430\u0440\u0435\u043f\u043e\u0440\u0442\u0438\u0442 \u0444\u0438\u0434\u0431\u0435\u043a \u0432 \u0444\u043e\u0440\u043c\u0443 <code>Smi*Smi-&gt;Smi<\/code>. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>Oscillator<\/code>, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 <code>waveTableLength<\/code> \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438 <code>generate<\/code>. \u0422\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e 20 % \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0445\u043e\u0442\u044f \u043c\u044b \u043d\u0435 \u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 <code>Oscillator<\/code>\u2018\u044b; \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0442\u0440\u0430\u0444 (non-local penalization). <\/p>\n<pre><code class=\"javascript\">--- audio-oscillator.js.ORIG    2016-12-15 22:01:43.897033156 +0100 +++ audio-oscillator.js 2016-12-15 22:02:26.397326067 +0100 @@ -1931,6 +1931,10 @@  var frequency = 344.53;  var sine = new Oscillator(Oscillator.Sine, frequency, 1, bufferSize, sampleRate);  +var unused = new Oscillator(Oscillator.Sine, frequency, 1, bufferSize, sampleRate); +unused.waveTableLength = 1024; +unused.generate(); +  var calcOsc = function() {    sine.generate();<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>audio-oscillator.js<\/code> \u0438 \u0432\u0435\u0440\u0441\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>Oscillator<\/code> \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c <code>waveTableLength<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:<\/p>\n<pre><code class=\"javascript\">$ ~\/Projects\/v8\/out\/Release\/d8 audio-oscillator.js.ORIG Time (audio-oscillator-once): 64 ms. $ ~\/Projects\/v8\/out\/Release\/d8 audio-oscillator.js Time (audio-oscillator-once): 81 ms. $ <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u0436\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043d\u0438\u0436\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u043d \u0435\u0451 \u0447\u0443\u0442\u044c \u0438\u043d\u0430\u0447\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043e \u0442\u0438\u043f\u0435 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e <code>BinaryOpIC<\/code>, \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b 20-\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b (\u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438). \u0418 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043d\u0438 \u0430\u0432\u0442\u043e\u0440, \u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c \u0432 \u043c\u0438\u0440\u0435 JavaScript. \u041f\u0430\u0440\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c JavaScript \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0438 \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0446\u0438\u044f\u0445. \u041c\u044b \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 <b>\u043a\u0443\u0447\u0443<\/b> \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0430\u0434\u0435\u043d\u0438\u0439, \u0438 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0438\u043c\u0435\u0435\u043c (\u043f\u043e\u0447\u0442\u0438) \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u0445\u043e\u0436\u0435, \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c <code>idiv<\/code>, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438 (\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438). TurboFan, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Crankshaft, \u0432\u043e \u0432\u0440\u0435\u043c\u044f runtime \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0440\u0430\u0432\u0435\u043d \u043b\u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0434 \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0438 \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 (\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439) \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (\u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434):<\/p>\n<pre><code class=\"javascript\">if 0 &lt; rhs then   msk = rhs - 1   if rhs & msk != 0 then     lhs % rhs   else     if lhs &lt; 0 then       -(-lhs & msk)     else       lhs & msk else   if rhs &lt; -1 then     lhs % rhs   else     zero<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u043d\u0430\u043c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0443\u044e \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u0441 TurboFan):<\/p>\n<pre><code class=\"javascript\">$ ~\/Projects\/v8\/out\/Release\/d8 --turbo audio-oscillator.js.ORIG Time (audio-oscillator-once): 69 ms. $ ~\/Projects\/v8\/out\/Release\/d8 --turbo audio-oscillator.js Time (audio-oscillator-once): 69 ms. $ <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438 \u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0430\u043c, \u043a\u0443\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u043e \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u0442, \u043a\u0430\u043a \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438, \u0438 \u043d\u0435 \u0437\u0430\u0449\u0438\u0442\u0438\u0442 \u0432\u0430\u0448\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0441\u0435 JS-\u0434\u0432\u0438\u0436\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a Kraken \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u0449\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u0432 TurboFan. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c <b>\u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/b> \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 TurboFan \u0434\u043e \u0441\u0432\u0435\u0440\u0445\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Crankshaft, \u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043d\u0430\u043c \u043e \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, \u0441 \u0435\u0433\u043e \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u0432\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e! \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u043b\u044e\u0447\u0435, \u0432 \u043a\u0430\u043a\u043e\u043c \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u044b\u0448\u0435, \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0451 \u043f\u043e\u043a\u0440\u044b\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0443\u0434\u043e\u0431\u043d\u044b \u0438 \u043f\u0440\u043e\u0441\u0442\u044b \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0438 \u043e \u0437\u0434\u0440\u0430\u0432\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0451 \u043f\u043e\u0433\u043b\u043e\u0442\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0438 \u043e\u0442 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0442\u043e\u043d\u043a\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430.<\/p>\n<p>  \u0421 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 Kraken \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u043b\u0438\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 JS-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u044f\u0442\u044c \u043b\u0435\u0442 \u2014 Octane.<\/p>\n<h1>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 Octane \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435<\/h1>\n<p>  \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a <a href=\"https:\/\/developers.google.com\/octane\">Octane<\/a> \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 V8. \u041e\u043d \u0431\u044b\u043b <a href=\"https:\/\/blog.chromium.org\/2012\/08\/octane-javascript-benchmark-suite-for.html\">\u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d Google \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 2012 \u0433\u043e\u0434\u0430<\/a>, \u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Octane 2.0 \u2014 <a href=\"https:\/\/blog.chromium.org\/2013\/11\/announcing-octane-20.html\">\u0432 \u043a\u043e\u043d\u0446\u0435 2013-\u0433\u043e<\/a>. \u0412 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f 15 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432, \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 Splay \u0438 Mandreel \u2014 \u043c\u044b \u0438\u0437\u043c\u0435\u0440\u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c (throughput) \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u043e\u0433\u043d\u0430\u043b\u0438 \u0440\u044f\u0434 \u0437\u0430\u0434\u0430\u0447, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c Microsofts TypeScript, \u0447\u0438\u0441\u0442\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <a href=\"http:\/\/asmjs.org\/\">asm.js<\/a> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0441\u0442\u0430 zlib, \u043b\u0443\u0447\u0435\u0432\u0443\u044e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 (ray tracer), \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 <a href=\"https:\/\/developers.google.com\/octane\/benchmark\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f<\/a>. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0431\u0434\u0443\u043c\u0430\u043d\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u0430\u0436\u043d\u044b\u043c\u0438 \u0432 2012 \u0433\u043e\u0434\u0443 \u0438\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p>  \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443, Octane \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0446\u0435\u043b\u044f\u043c\u0438 \u0438 \u0432\u044b\u0432\u0435\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c JavaScript \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432 2012\u20142013-\u043c. \u041d\u043e \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 \u0433\u043e\u0434\u044b \u043c\u0438\u0440 \u043e\u0447\u0435\u043d\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c Octane \u0432\u043b\u0438\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0440\u0435\u0432\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 TypeScript \u0438 zlib \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0435\u0432\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/kripken\/emscripten\">Emscripten<\/a>, \u0430 Mandreel \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d).<\/p>\n<p>  \u041c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0436\u0434\u0443 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u043c\u0438 \u0432 \u0432\u0435\u0431\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043c\u0435\u0436\u0434\u0443 <a href=\"http:\/\/emberjs.com\/\">Ember<\/a> \u0438 <a href=\"https:\/\/angularjs.org\/\">AngularJS<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u0432 Octane \u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442 \u043e\u0442 (\u043d\u0430\u0448\u0438\u0445) \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438 \u043f\u043e\u0431\u0435\u0434\u0443 JavaScript \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0430\u0445, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0435 JS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u043d\u0435\u0434\u0435\u043b\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043b\u0435\u0442, \u0438 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043e \u0432 Octane. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 Octane \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0435\u043b \u0432 \u0432\u0435\u0431\u0435.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Octane, \u0447\u044c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u0447\u0430\u043c. \u0417\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a! \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u0430\u0440\u0443 \u0440\u0430\u0437, Octane \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0433\u043b\u0430\u0432\u0430 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JavaScript, \u043e\u043d \u0441\u044b\u0433\u0440\u0430\u043b \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u043c\u0435\u0442\u043d\u0443\u044e \u0440\u043e\u043b\u044c. \u0412\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0435 \u0432 JS-\u0434\u0432\u0438\u0436\u043a\u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043f\u0430\u043a\u0435\u0442\u0443 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438\u0441\u044c \u0441 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Octane \u2014 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439!<b> \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442\u044c!<\/b><\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u0441\u0442 Box2D, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 <a href=\"https:\/\/github.com\/hecht-software\/box2dweb\">Box2DWeb<\/a>, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435, \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 JavaScript. \u0417\u0434\u0435\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 JS-\u0434\u0432\u0438\u0436\u043a\u0430\u0445 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u041d\u043e \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u0430\u0433, \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 (\u044f \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442). \u0412 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>D.prototype.UpdatePairs<\/code> (\u0434\u0435\u043c\u0438\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043e):<\/p>\n<pre><code class=\"javascript\">D.prototype.UpdatePairs = function(b) {     var e = this;     var f = e.m_pairCount = 0,         m;     for (f = 0; f &lt; e.m_moveBuffer.length; ++f) {         m = e.m_moveBuffer[f];         var r = e.m_tree.GetFatAABB(m);         e.m_tree.Query(function(t) {                 if (t == m) return true;                 if (e.m_pairCount == e.m_pairBuffer.length) e.m_pairBuffer[e.m_pairCount] = new O;                 var x = e.m_pairBuffer[e.m_pairCount];                 x.proxyA = t &lt; m ? t : m;                 x.proxyB = t &gt;= m ? t : m;                 ++e.m_pairCount;                 return true             },             r)     }     for (f = e.m_moveBuffer.length = 0; f &lt; e.m_pairCount;) {         r = e.m_pairBuffer[f];         var s = e.m_tree.GetUserData(r.proxyA),             v = e.m_tree.GetUserData(r.proxyB);         b(s, v);         for (++f; f &lt; e.m_pairCount;) {             s = e.m_pairBuffer[f];             if (s.proxyA != r.proxyA || s.proxyB != r.proxyB) break;             ++f         }     } };<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0432\u0438\u043d\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0446\u0438\u043a\u043b\u0435 <code>e.m_tree.Query<\/code>:<\/p>\n<pre><code class=\"javascript\">function(t) {     if (t == m) return true;     if (e.m_pairCount == e.m_pairBuffer.length) e.m_pairBuffer[e.m_pairCount] = new O;     var x = e.m_pairBuffer[e.m_pairCount];     x.proxyA = t &lt; m ? t : m;     x.proxyB = t &gt;= m ? t : m;     ++e.m_pairCount;     return true }<\/code><\/pre>\n<p>  \u0422\u043e\u0447\u043d\u0435\u0435, \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0441\u0430\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0435\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. 4\u20147 % \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0432 <a href=\"https:\/\/github.com\/v8\/v8\/blob\/5124589642ba12228dcd66a8cb8c84c986a13f35\/src\/runtime\/runtime-object.cc#L884\">runtime-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 Compare<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-abstract-relational-comparison\">\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/a> (abstract relational comparison).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0f8\/e55\/e99\/0f8e55e99c9a4343b4cdb04576fbf6aa.png\"\/><\/p>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b runtime-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0434\u0443\u0442 \u0438\u0437 <a href=\"https:\/\/github.com\/v8\/v8\/blob\/5124589642ba12228dcd66a8cb8c84c986a13f35\/src\/x64\/code-stubs-x64.cc#L2495\">CompareICStub<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">x.proxyA = t &lt; m ? t : m; x.proxyB = t &gt;= m ? t : m;<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f 99 % \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438! \u041a\u0430\u043a \u0442\u0430\u043a? \u041d\u0443, \u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u0432 JavaScript, <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-abstract-relational-comparison\">\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/a> \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>t<\/code> \u0438 <code>m<\/code> \u2014 \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b <code>L<\/code>, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>Symbol.toPrimitive<\/code>, <code>&quot;toString&quot;<\/code>, <code>&quot;valueOf&quot;<\/code> \u0438 <code>Symbol.toStringTag<\/code>, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u043c\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <code>t &lt; m<\/code>, \u0442\u043e:<\/p>\n<ol>\n<li>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-toprimitive\">ToPrimitive<\/a>(<code>t<\/code>, <code>hint Number<\/code>).<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-ordinarytoprimitive\">OrdinaryToPrimitive<\/a>(<code>t<\/code>, <code>&quot;number&quot;<\/code>), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u0442 <code>Symbol.toPrimitive<\/code>.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f <code>t.valueOf()<\/code>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0430\u043c\u043e <code>t<\/code>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-object.prototype.valueof\">Object.prototype.valueOf<\/a>.<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0451\u0442 <code>t.toString()<\/code>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c <code>&quot;[object Object]&quot;<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-object.prototype.toString\">Object.prototype.toString<\/a>, \u0430 <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-symbol.tostringtag\">Symbol.toStringTag<\/a> \u0434\u043b\u044f <code>L<\/code> \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430.<\/li>\n<li>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-toprimitive\">ToPrimitive<\/a>(<code>m<\/code>, <code>hint Number<\/code>).<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-ordinarytoprimitive\">OrdinaryToPrimitive<\/a>(<code>m<\/code>, <code>&quot;number&quot;<\/code>), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u0442 Symbol.toPrimitive.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f <code>m.valueOf()<\/code>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0430\u043c\u043e m, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-object.prototype.valueof\">Object.prototype.valueOf<\/a>.<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0451\u0442 <code>m.toString()<\/code>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c <code>&quot;[object Object]&quot;<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-object.prototype.toString\">Object.prototype.toString<\/a>, \u0430 <a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-symbol.tostringtag\">Symbol.toStringTag<\/a> \u0434\u043b\u044f <code>L<\/code> \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430.<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 <code>&quot;[object Object]&quot; &lt; &quot;[object Object]&quot;<\/code>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c <\/li>\n<\/ol>\n<p>.<\/p>\n<p>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438 \u043f\u0440\u0438 <code>t &gt;= m<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c <code>true<\/code>. \u0411\u0430\u0433 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0421\u0443\u0442\u044c \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430: \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0432\u0451\u0440\u0442\u043a\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0430\u0442\u0447:<\/p>\n<pre><code class=\"javascript\">--- octane-box2d.js.ORIG        2016-12-16 07:28:58.442977631 +0100 +++ octane-box2d.js     2016-12-16 07:29:05.615028272 +0100 @@ -2021,8 +2021,8 @@                      if (t == m) return true;                      if (e.m_pairCount == e.m_pairBuffer.length) e.m_pairBuffer[e.m_pairCount] = new O;                      var x = e.m_pairBuffer[e.m_pairCount]; -                    x.proxyA = t &lt; m ? t : m; -                    x.proxyB = t &gt;= m ? t : m; +                    x.proxyA = m; +                    x.proxyB = t;                      ++e.m_pairCount;                      return true                  },<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 13 %, \u043e\u0442\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0438\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">$ ~\/Projects\/v8\/out\/Release\/d8 octane-box2d.js.ORIG Score (Box2D): 48063 $ ~\/Projects\/v8\/out\/Release\/d8 octane-box2d.js Score (Box2D): 55359 $<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438? \u041f\u043e\u0445\u043e\u0436\u0435, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0431\u044b\u043b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 <code>CompareIC<\/code>: \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (map) <b>\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f<\/b> (known receiver map tracking) (\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 V8 map \u2014 \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430 + \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430). \u041d\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 \u0441\u0442\u0440\u043e\u0433\u043e\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0434\u043b\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"javascript\">$ ~\/Projects\/v8\/out\/Release\/d8 --trace-ic octane-box2d.js [...SNIP...] [CompareIC in ~+557 at octane-box2d.js:2024 ((UNINITIALIZED+UNINITIALIZED=UNINITIALIZED)-&gt;(RECEIVER+RECEIVER=KNOWN_RECEIVER))#LT @ 0x1d5a860493a1] [CompareIC in ~+649 at octane-box2d.js:2025 ((UNINITIALIZED+UNINITIALIZED=UNINITIALIZED)-&gt;(RECEIVER+RECEIVER=KNOWN_RECEIVER))#GTE @ 0x1d5a860496e1] [...SNIP...] $ <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043e\u0434\u0435 <code>CompareIC<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u00ab\u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c\u00bb \u0438 \u00ab\u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u043d\u043e\u00bb \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>RECEIVER<\/code>\u2019\u044b (JavaScript-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 V8). \u0418 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (map) <code>0x1d5a860493a1<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 <code>L<\/code>. \u0412 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0432\u0451\u0440\u0442\u043a\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0434\u043e <code>false<\/code> \u0438 <code>true<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c: \u043e\u0431\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u2014 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c <code>0x1d5a860493a1<\/code>. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0432\u043c\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 <code>L<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b <code>the Symbol.toPrimitive<\/code>, <code>&quot;valueOf&quot;<\/code> \u0438 <code>&quot;toString&quot;<\/code>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0434\u0430\u0441\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u0430 <code>Symbol.toStringTag<\/code>. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432 Crankshaft \u0442\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0447\u0451\u0440\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u043a\u043b\u044f\u0442\u0438\u0439 \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c <code>Symbol.toStringTag<\/code>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0df\/be3\/876\/0dfbe38765c64110a23f6020a9de3bd2.png\"\/><\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e04\/26d\/1ed\/e0426d1edfb2468ca79304b17e047455.png\"\/><\/p>\n<p>  \u0412 \u0441\u0432\u043e\u044e \u0437\u0430\u0449\u0438\u0442\u0443 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c: \u044f \u043d\u0435 \u0431\u044b\u043b \u0443\u0432\u0435\u0440\u0435\u043d \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0431\u0430\u0433\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u042f \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e JS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0433\u0438. \u041d\u043e \u044f \u043e\u0448\u0438\u0431\u0430\u043b\u0441\u044f, \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u044e \u0441\u0432\u043e\u044e \u043e\u0448\u0438\u0431\u043a\u0443! \u0414\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435 (\u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <code>true<\/code> \u0438\u043b\u0438 <code>false<\/code>, \u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442). \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043c\u043e\u0435\u0433\u043e \u043f\u0430\u0442\u0447\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f. \u041a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0432\u0441\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 ES2015, \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u043e\u043f\u043e\u0442\u0435\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u0435\u0437 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u043b\u043e\u0432 \u0432 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445 (ES2015 \u2014 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043d\u0441\u0442\u0440!).<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 Mandreel. \u042d\u0442\u043e \u0431\u044b\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 C\/C++ \u0432 JavaScript. \u041e\u043d \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <a href=\"http:\/\/asmjs.org\/\">asm.js<\/a>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 <a href=\"https:\/\/github.com\/kripken\/emscripten\">Emscripten<\/a>, \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0440\u0438 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u0431\u044b\u043b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c (\u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0441\u0447\u0435\u0437 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430). \u041e\u0434\u043d\u0430\u043a\u043e Octane \u0435\u0449\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0435\u0440\u0441\u0438\u044e <a href=\"http:\/\/bulletphysics.org\/wordpress\/\">\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 Bullet<\/a>, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http:\/\/www.mandreel.com\/\">Mandreel<\/a>. \u041d\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u0442\u0435\u0441\u0442 MandreelLatency, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u044b\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Mandreel \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0430 \u0442\u0435\u0441\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443. \u0427\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u043f\u0430\u0443\u0437\u044b \u043c\u0435\u0436\u0434\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438, \u0442\u0435\u043c \u043d\u0438\u0436\u0435 \u0431\u0430\u043b\u043b. \u0412 \u0442\u0435\u043e\u0440\u0438\u0438 \u0432\u0441\u0451 \u0437\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u0438 \u0442\u0430\u043a \u043e\u043d\u043e \u0438 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435. \u041d\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438, \u043a\u0430\u043a \u043e\u0431\u043c\u0430\u043d\u0443\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/49a\/34b\/b3a\/49a34bb3ad5540cc82747f4f7fc0dd62.png\"\/><\/p>\n<p>  Mandreel \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>global_init<\/code>, \u0438 \u043d\u0430 \u0435\u0451 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0432\u0438\u0436\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e \u043c\u043d\u043e\u0433\u0443 \u0440\u0430\u0437 \u043f\u0430\u0440\u0441\u044f\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0441\u0442\u0430\u0434\u0438\u044f \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430), \u0430 \u0437\u0430\u0442\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435, \u043e\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u0438 \u0434\u043b\u044f \u043d\u0435\u0451 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 (\u0438\u043b\u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434). \u0412 V8 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/docs.google.com\/presentation\/d\/1214p4CFjsF-NY4z9in0GEcJtjbyVQgU0A-UqEvovzCs\">\u043b\u0435\u043d\u0438\u0432\u044b\u043c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c<\/a>. \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432 \u0434\u0432\u0438\u0436\u043a\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430. \u041d\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>global_init<\/code> \u0438\u0437 Mandreel \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433 + \u043f\u0430\u0440\u0441\u0438\u043d\u0433 + \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u043c\u0430\u0441\u0441\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u0438 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>global_init<\/code>, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0443.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/58e\/f8f\/201\/58ef8f2018cf48eda10205a801a9a354.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/arewefastyet.com\/#machine=29&amp;view=single&amp;suite=octane&amp;subtest=MandreelLatency&amp;start=1415924086&amp;end=1446461709\">arewefastyet.com<\/a>.<\/i><\/p>\n<p>  \u0412\u043d\u0435\u0434\u0440\u0438\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <code>global_init<\/code> \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0432 \u0434\u043e\u0440\u043e\u0433\u043e\u0433\u043e \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 200-\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435. \u041c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043e\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0431\u044b\u043b \u0431\u044b \u043f\u043e\u043b\u0435\u0437\u0435\u043d (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e).<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u2014 <a href=\"https:\/\/github.com\/chromium\/octane\/blob\/master\/splay.js\">splay.js<\/a>. \u042d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0441\u044b\u043c\u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 (splay trees) \u0438 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e (\u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430). \u0412 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u044b\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438: \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u0430\u0443\u0437\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430. \u0422\u0435\u0441\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0443\u0437\u044b \u043f\u043e \u0432\u0451\u0434\u0440\u0430\u043c (buckets) \u0438 \u0448\u0442\u0440\u0430\u0444\u0443\u0435\u0442 \u0437\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u0430\u0443\u0437\u044b, \u0441\u043d\u0438\u0436\u0430\u044f \u043e\u0431\u0449\u0438\u0439 \u0431\u0430\u043b\u043b. \u0417\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e! \u0412 \u0442\u0435\u043e\u0440\u0438\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434, \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0441\u044b\u043c\u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7c7\/06b\/340\/7c706b34029347ca9cb501ac203082c4.png\"\/><\/p>\n<p>  \u042d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0438, \u0447\u0442\u043e \u0431\u044b \u0432\u044b \u043d\u0438 \u0434\u0443\u043c\u0430\u043b\u0438, \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442 \u043d\u0435\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0431\u0430\u043b\u043b SplayLatency. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e \u0441\u0443\u0442\u0438, \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u043a\u043e\u0441\u044b\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0445 \u0443\u0437\u043b\u043e\u0432 \u0432\u044b\u0436\u0438\u0432\u0430\u043b\u0438 \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u0432 \u0441\u0442\u0430\u0440\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0417\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (generational garbage collector), \u043a\u0430\u043a \u0432 V8: \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 (<a href=\"http:\/\/www.memorymanagement.org\/glossary\/g.html\">generational hypothesis<\/a>), \u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043f\u0430\u0443\u0437\u0430\u043c \u043d\u0430 \u043f\u043e\u043b\u043d\u0443\u044e \u044d\u0432\u0430\u043a\u0443\u0430\u0446\u0438\u044e \u0438\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432 \u0441\u0442\u0430\u0440\u043e\u0435. \u042d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a V8 \u0432 \u0441\u0442\u0430\u0440\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"javascript\">$ out\/Release\/d8 --trace-gc --noallocation_site_pretenuring octane-splay.js [20872:0x7f26f24c70d0]       10 ms: Scavenge 2.7 (6.0) -&gt; 2.7 (7.0) MB, 1.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       12 ms: Scavenge 2.7 (7.0) -&gt; 2.7 (8.0) MB, 1.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       14 ms: Scavenge 3.7 (8.0) -&gt; 3.6 (10.0) MB, 0.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       18 ms: Scavenge 4.8 (10.5) -&gt; 4.7 (11.0) MB, 2.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       22 ms: Scavenge 5.7 (11.0) -&gt; 5.6 (16.0) MB, 2.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       28 ms: Scavenge 8.7 (16.0) -&gt; 8.6 (17.0) MB, 4.3 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       35 ms: Scavenge 9.6 (17.0) -&gt; 9.6 (28.0) MB, 6.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       49 ms: Scavenge 16.6 (28.5) -&gt; 16.4 (29.0) MB, 8.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       65 ms: Scavenge 17.5 (29.0) -&gt; 17.5 (52.0) MB, 15.3 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]       93 ms: Scavenge 32.3 (52.5) -&gt; 32.0 (53.5) MB, 17.6 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      126 ms: Scavenge 33.4 (53.5) -&gt; 33.3 (68.0) MB, 31.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      151 ms: Scavenge 47.9 (68.0) -&gt; 47.6 (69.5) MB, 15.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      183 ms: Scavenge 49.2 (69.5) -&gt; 49.2 (84.0) MB, 30.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      210 ms: Scavenge 63.5 (84.0) -&gt; 62.4 (85.0) MB, 14.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      241 ms: Scavenge 64.7 (85.0) -&gt; 64.6 (99.0) MB, 28.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      268 ms: Scavenge 78.2 (99.0) -&gt; 77.6 (101.0) MB, 16.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      298 ms: Scavenge 80.4 (101.0) -&gt; 80.3 (114.5) MB, 28.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      324 ms: Scavenge 93.5 (114.5) -&gt; 92.9 (117.0) MB, 16.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      354 ms: Scavenge 96.2 (117.0) -&gt; 96.0 (130.0) MB, 27.6 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      383 ms: Scavenge 108.8 (130.0) -&gt; 108.2 (133.0) MB, 16.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      413 ms: Scavenge 111.9 (133.0) -&gt; 111.7 (145.5) MB, 27.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      440 ms: Scavenge 124.1 (145.5) -&gt; 123.5 (149.0) MB, 17.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      473 ms: Scavenge 127.6 (149.0) -&gt; 127.4 (161.0) MB, 29.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      502 ms: Scavenge 139.4 (161.0) -&gt; 138.8 (165.0) MB, 18.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      534 ms: Scavenge 143.3 (165.0) -&gt; 143.1 (176.5) MB, 28.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      561 ms: Scavenge 154.7 (176.5) -&gt; 154.2 (181.0) MB, 19.0 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      594 ms: Scavenge 158.9 (181.0) -&gt; 158.7 (192.0) MB, 29.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      622 ms: Scavenge 170.0 (192.5) -&gt; 169.5 (197.0) MB, 19.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      655 ms: Scavenge 174.6 (197.0) -&gt; 174.3 (208.0) MB, 28.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      683 ms: Scavenge 185.4 (208.0) -&gt; 184.9 (212.5) MB, 19.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      715 ms: Scavenge 190.2 (213.0) -&gt; 190.0 (223.5) MB, 27.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      743 ms: Scavenge 200.7 (223.5) -&gt; 200.3 (228.5) MB, 19.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      774 ms: Scavenge 205.8 (228.5) -&gt; 205.6 (239.0) MB, 27.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      802 ms: Scavenge 216.1 (239.0) -&gt; 215.7 (244.5) MB, 19.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      833 ms: Scavenge 221.4 (244.5) -&gt; 221.2 (254.5) MB, 26.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      861 ms: Scavenge 231.5 (255.0) -&gt; 231.1 (260.5) MB, 19.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      892 ms: Scavenge 237.0 (260.5) -&gt; 236.7 (270.5) MB, 26.3 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      920 ms: Scavenge 246.9 (270.5) -&gt; 246.5 (276.0) MB, 20.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      951 ms: Scavenge 252.6 (276.0) -&gt; 252.3 (286.0) MB, 25.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]      979 ms: Scavenge 262.3 (286.0) -&gt; 261.9 (292.0) MB, 20.3 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1014 ms: Scavenge 268.2 (292.0) -&gt; 267.9 (301.5) MB, 29.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1046 ms: Scavenge 277.7 (302.0) -&gt; 277.3 (308.0) MB, 22.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1077 ms: Scavenge 283.8 (308.0) -&gt; 283.5 (317.5) MB, 25.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1105 ms: Scavenge 293.1 (317.5) -&gt; 292.7 (323.5) MB, 20.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1135 ms: Scavenge 299.3 (323.5) -&gt; 299.0 (333.0) MB, 24.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1164 ms: Scavenge 308.6 (333.0) -&gt; 308.1 (339.5) MB, 20.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1194 ms: Scavenge 314.9 (339.5) -&gt; 314.6 (349.0) MB, 25.0 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1222 ms: Scavenge 324.0 (349.0) -&gt; 323.6 (355.5) MB, 21.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1253 ms: Scavenge 330.4 (355.5) -&gt; 330.1 (364.5) MB, 25.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1282 ms: Scavenge 339.4 (364.5) -&gt; 339.0 (371.0) MB, 22.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1315 ms: Scavenge 346.0 (371.0) -&gt; 345.6 (380.0) MB, 25.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1413 ms: Mark-sweep 349.9 (380.0) -&gt; 54.2 (305.0) MB, 5.8 \/ 0.0 ms  (+ 87.5 ms in 73 steps since start of marking, biggest step 8.2 ms, walltime since start of marking 131 ms) finalize incremental marking via stack guard GC in old space requested [20872:0x7f26f24c70d0]     1457 ms: Scavenge 65.8 (305.0) -&gt; 65.1 (305.0) MB, 31.0 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1489 ms: Scavenge 69.9 (305.0) -&gt; 69.7 (305.0) MB, 27.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1523 ms: Scavenge 80.9 (305.0) -&gt; 80.4 (305.0) MB, 22.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1553 ms: Scavenge 85.5 (305.0) -&gt; 85.3 (305.0) MB, 24.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1581 ms: Scavenge 96.3 (305.0) -&gt; 95.7 (305.0) MB, 18.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1616 ms: Scavenge 101.1 (305.0) -&gt; 100.9 (305.0) MB, 29.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1648 ms: Scavenge 111.6 (305.0) -&gt; 111.1 (305.0) MB, 22.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1678 ms: Scavenge 116.7 (305.0) -&gt; 116.5 (305.0) MB, 25.0 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1709 ms: Scavenge 127.0 (305.0) -&gt; 126.5 (305.0) MB, 20.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1738 ms: Scavenge 132.3 (305.0) -&gt; 132.1 (305.0) MB, 23.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1767 ms: Scavenge 142.4 (305.0) -&gt; 141.9 (305.0) MB, 19.6 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1796 ms: Scavenge 147.9 (305.0) -&gt; 147.7 (305.0) MB, 23.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1825 ms: Scavenge 157.8 (305.0) -&gt; 157.3 (305.0) MB, 19.9 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1853 ms: Scavenge 163.5 (305.0) -&gt; 163.2 (305.0) MB, 22.2 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1881 ms: Scavenge 173.2 (305.0) -&gt; 172.7 (305.0) MB, 19.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1910 ms: Scavenge 179.1 (305.0) -&gt; 178.8 (305.0) MB, 23.0 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1944 ms: Scavenge 188.6 (305.0) -&gt; 188.1 (305.0) MB, 25.1 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     1979 ms: Scavenge 194.7 (305.0) -&gt; 194.4 (305.0) MB, 28.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     2011 ms: Scavenge 204.0 (305.0) -&gt; 203.6 (305.0) MB, 23.4 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     2041 ms: Scavenge 210.2 (305.0) -&gt; 209.9 (305.0) MB, 23.8 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     2074 ms: Scavenge 219.4 (305.0) -&gt; 219.0 (305.0) MB, 24.5 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     2105 ms: Scavenge 225.8 (305.0) -&gt; 225.4 (305.0) MB, 24.7 \/ 0.0 ms  allocation failure [20872:0x7f26f24c70d0]     2138 ms: Scavenge 234.8 (305.0) -&gt; 234.4 (305.0) MB, 23.1 \/ 0.0 ms  allocation failure [...SNIP...] $ <\/code><\/pre>\n<p>  \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u043e\u0432 \u043a\u043e\u0441\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u0441\u0442\u0430\u0440\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u044b\u0445 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0441\u043d\u0438\u0437\u0438\u0442 \u0434\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0443\u0441\u043e\u0440\u0430 (\u0442\u043e \u0435\u0441\u0442\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442 \u043f\u0430\u0443\u0437\u044b \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443). \u0422\u0430\u043a \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/research.google.com\/pubs\/pub43823.html\">allocation site pretenuring<\/a>. \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u043d \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u0438\u0437 \u0442\u043e\u0447\u0435\u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f (allocation sites), \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c, \u0432\u044b\u0436\u0438\u0432\u0435\u0442 \u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0434\u0430, \u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0442\u0430\u0440\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u2014 <b>pretenure \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/b>.<\/p>\n<pre><code class=\"javascript\">$ out\/Release\/d8 --trace-gc octane-splay.js [20885:0x7ff4d7c220a0]        8 ms: Scavenge 2.7 (6.0) -&gt; 2.6 (7.0) MB, 1.2 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       10 ms: Scavenge 2.7 (7.0) -&gt; 2.7 (8.0) MB, 1.6 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       11 ms: Scavenge 3.6 (8.0) -&gt; 3.6 (10.0) MB, 0.9 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       17 ms: Scavenge 4.8 (10.5) -&gt; 4.7 (11.0) MB, 2.9 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       20 ms: Scavenge 5.6 (11.0) -&gt; 5.6 (16.0) MB, 2.8 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       26 ms: Scavenge 8.7 (16.0) -&gt; 8.6 (17.0) MB, 4.5 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       34 ms: Scavenge 9.6 (17.0) -&gt; 9.5 (28.0) MB, 6.8 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       48 ms: Scavenge 16.6 (28.5) -&gt; 16.4 (29.0) MB, 8.6 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       64 ms: Scavenge 17.5 (29.0) -&gt; 17.5 (52.0) MB, 15.2 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]       96 ms: Scavenge 32.3 (52.5) -&gt; 32.0 (53.5) MB, 19.6 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]      153 ms: Scavenge 61.3 (81.5) -&gt; 57.4 (93.5) MB, 27.9 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]      432 ms: Scavenge 339.3 (364.5) -&gt; 326.6 (364.5) MB, 12.7 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]      666 ms: Scavenge 563.7 (592.5) -&gt; 553.3 (595.5) MB, 20.5 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]      825 ms: Mark-sweep 603.9 (644.0) -&gt; 96.0 (528.0) MB, 4.0 \/ 0.0 ms  (+ 92.5 ms in 51 steps since start of marking, biggest step 4.6 ms, walltime since start of marking 160 ms) finalize incremental marking via stack guard GC in old space requested [20885:0x7ff4d7c220a0]     1068 ms: Scavenge 374.8 (528.0) -&gt; 362.6 (528.0) MB, 19.1 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]     1304 ms: Mark-sweep 460.1 (528.0) -&gt; 102.5 (444.5) MB, 10.3 \/ 0.0 ms  (+ 117.1 ms in 59 steps since start of marking, biggest step 7.3 ms, walltime since start of marking 200 ms) finalize incremental marking via stack guard GC in old space requested [20885:0x7ff4d7c220a0]     1587 ms: Scavenge 374.2 (444.5) -&gt; 361.6 (444.5) MB, 13.6 \/ 0.0 ms  allocation failure [20885:0x7ff4d7c220a0]     1828 ms: Mark-sweep 485.2 (520.0) -&gt; 101.5 (519.5) MB, 3.4 \/ 0.0 ms  (+ 102.8 ms in 58 steps since start of marking, biggest step 4.5 ms, walltime since start of marking 183 ms) finalize incremental marking via stack guard GC in old space requested [20885:0x7ff4d7c220a0]     2028 ms: Scavenge 371.4 (519.5) -&gt; 358.5 (519.5) MB, 12.1 \/ 0.0 ms  allocation failure [...SNIP...] $<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u043c SplayLatency \u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 250 %!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/815\/3a4\/be2\/8153a4be251f499c9e556386e0f2cfce.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/arewefastyet.com\/#machine=12&amp;view=single&amp;suite=octane&amp;subtest=SplayLatency&amp;start=1384889558&amp;end=1415405874\">arewefastyet.com<\/a>. <\/i><\/p>\n<p>  \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e <a href=\"https:\/\/research.google.com\/pubs\/pub43823.html\">SIGPLAN<\/a>, \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e allocation site pretenuring \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0418 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0438 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u041d\u043e \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u043d\u044f\u043b\u0438 (<a href=\"https:\/\/bugs.chromium.org\/p\/v8\/issues\/detail?id=2935\">1<\/a>, <a href=\"https:\/\/bugs.chromium.org\/p\/chromium\/issues\/detail?id=367694\">2<\/a>, <a href=\"https:\/\/bugs.chromium.org\/p\/v8\/issues\/detail?id=3665\">3<\/a>), \u0447\u0442\u043e allocation site pretenuring \u043c\u043e\u0436\u0435\u0442 \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0442\u0437\u044b\u0432\u043e\u0432, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0431\u0443\u0440\u043b\u0435\u043d\u0438\u0435 \u0433\u043e\u0432\u043d \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Ember.js (\u043f\u0440\u0430\u0432\u0434\u0430, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 allocation site pretenuring). <\/p>\n<p>  \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 allocation site pretenuring, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u2014 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437-\u0437\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u043d\u043e \u0438 \u043f\u043e \u0440\u044f\u0434\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0444\u0430\u0431\u0440\u0438\u043a\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0432\u0430\u0448\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0432\u0438\u0434\u044b, \u043e\u043d\u0430 \u0432 \u0444\u0430\u0431\u0440\u0438\u0447\u043d\u043e\u043c(-\u044b\u0445) \u043c\u0435\u0442\u043e\u0434\u0435(-\u0430\u0445) \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0442\u043e\u0447\u043a\u0443 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f (allocation site) \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <b>tenured<\/b>, \u0430 \u0432\u0441\u0451 \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u043e\u0435 \u0438\u0437 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u0442\u0430\u0440\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0444\u0430\u0431\u0440\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u044e\u0442 \u0441\u0442\u0430\u0440\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0434\u043e\u0440\u043e\u0433\u0438\u043c \u0446\u0438\u043a\u043b\u0430\u043c \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c \u0432\u0440\u043e\u0434\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 (incremental marking).<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u043f\u0440\u0438\u0448\u043b\u0438 \u043a <a href=\"http:\/\/v8project.blogspot.de\/2016\/04\/jank-busters-part-two-orinoco.html\">Orinoco<\/a>. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430\u0448\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u0439 \u0441\u0442\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 <b>\u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u0443\u0447\u0438<\/b> (unified heap), \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451. \u041d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435: \u0435\u0441\u043b\u0438 \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0436\u0438\u0432\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0442\u043e \u0432\u0441\u0435 \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u043c\u0438 \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0443, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0432\u0435\u0436\u0435\u0435 \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 SplayLatency \u044d\u0442\u043e \u043d\u0435 \u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043d\u043e \u0442\u0430\u043a \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <b>\u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438<\/b> (concurrent marking) \u0434\u043b\u044f \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0435\u0434, \u0447\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043d\u0438\u0437\u0438\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c (throughput). <\/p>\n<h1>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430. \u0418, \u0432\u044b\u0439\u0434\u044f \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b <b>\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438<\/b>, \u0432\u044b \u043d\u0430\u0447\u043d\u0451\u0442\u0435 \u043f\u043e\u043f\u0443\u0441\u0442\u0443 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0441\u0432\u043e\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0430 \u0442\u043e \u0438 \u043d\u0430\u0432\u0440\u0435\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432! \u041f\u043e\u0440\u0430 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u043f\u043e \u0438\u0445 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u043f\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0431\u0435\u0436\u0434\u0430\u0442\u044c \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0440\u0430 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/789\/4e1\/c57\/7894e1c57b0c4a3fb1709caa9ba54f22.png\"\/><\/p>\n<p>  <i>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: \u0411\u0438\u0442\u0432\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 2016-\u0433\u043e: Chrome vs. Firefox vs. Edge, <a href=\"http:\/\/venturebeat.com\/2016\/10\/25\/browser-benchmark-battle-october-2016-chrome-vs-firefox-vs-edge\/3\">venturebeat.com<\/a>. <\/i><\/p>\n<p>  \u041c\u044b \u043d\u0435 \u0431\u043e\u0438\u043c\u0441\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438, \u043d\u043e \u0438\u0433\u0440\u044b \u0441 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438 \u2014 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u043e\u0434\u043d\u044f\u0432 JavaScript \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0418 \u0437\u0430\u043e\u0434\u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u043c\u0441\u044f \u0432 Node.js (\u043a\u0430\u043a \u0438 \u043d\u0430 V8, \u0438 \u043d\u0430 ChakraCore)!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/84f\/829\/88d\/84f82988d085483dbf6e99ee1dd9b7e6.jpg\"\/><\/p>\n<p>  \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439: \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 JavaScript-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432. \u042d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c JavaScript \u0447\u0430\u0441\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0430 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0442 \u0436\u0435\u043b\u0435\u0437\u0430. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Chrome \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u0436\u0434\u044b\u0435 \u0448\u0435\u0441\u0442\u044c \u043d\u0435\u0434\u0435\u043b\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u0430\u0440\u0442\u043e\u0432\u0441\u043a\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0443\u0436\u0435 \u0432 \u0430\u043f\u0440\u0435\u043b\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439, \u0442\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/browserbench.org\/Speedometer\">Speedometer<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e!<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/318282\/\"> https:\/\/habrahabr.ru\/post\/318282\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a99\/0aa\/d96\/a990aad96e82fa731e5709d47bfd3b81.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e JavaScript \u2014 \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u043b \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u0441\u0435\u0439 \u0441\u0432\u043e\u0435\u0439 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044f\u0437\u044b\u043a\u0430 JavaScript \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0432\u0430\u0448 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043d\u0438\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435\u0434\u0435\u043b\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 JavaScript \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0435\u0433\u043e\u0434\u043d\u044f JavaScript \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0432 \u0432\u0435\u0431\u0435, \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439\/\u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0444\u0435\u0440\u0435 (\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Node.js), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-283058","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=283058"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283058\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=283058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=283058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=283058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}