Подтвердить что ты не робот

Что такое "CrankShaftScript" в Node.js?

В сообществе Node.js все больше ссылок на "CrankShaftScript" (и "CrankShaftJS" ) на обсуждениях в Twitter, GitHub и Facebook. Я думал, что Node.js написано на С++ и JavaScript, так что CrankShaftScript ссылается на ошибки регрессии производительности, такие как этот:

https://github.com/nodejs/CTC/issues/146#issue-237435588

4b9b3361

Ответ 1

CrankShaftScript является принятым сообществом термином, используемым для неидиоматического и/или нестандартного совместимого JavaScript, который будет выполнять и/или хорошо работать в конкретных версиях среды выполнения JavaScript v8, в которых используется компилятор CrankShaft JIT. Конкретные примеры включают в себя: циклы, написанные в сложном для поддержания режима, чтобы работать с недостатками оптимизации JIT в версии 8 и использовать встроенные функции/глобальные переменные v8.

Этот термин был первоначально использован для описания некоторых проблем производительности root в node -chakracore и spidernode, которые являются Node.js-дистрибутивами, в которых используются чаты ChakraCore и SpiderMonkey вместо v8.

В настоящее время он используется в качестве сокращения, чтобы объяснить, почему версия Node.js 8.1, обновленная до более новой версии v8, имеет несколько регрессий производительности в микро- и макро-тестах из-за замены V8 CrankShaft JIT TurboFan (иногда называемый "TF" ). Как и в этих проблемах:

По этим причинам сообщество Node.js активно работает над вырезанием экземпляров CrankShaftScript в w631>.js, а также в общих пакетах npm. Это должно помочь альтернативным Node.js дистрибутивам, таким как node -chakracore, лучше выполнять и облегчать риск будущих обновлений для среды выполнения JavaScript в Node.js.

Ответ 2

CrankShaftScript - это имя, данное сообществом JS-идиомам (например, некоторым типам циклов), которые работают быстрее (est?) на двигателе V8 CrankShaft.

CrankShaft заменяется двигателем TurboFan. Многие JS-коды, написанные разработчиками на протяжении многих лет, были написаны специально для быстрого запуска на CrankShaft (например, написано в "CrankShaftScript" ) с использованием известных идиом, которые быстро запускаются на CrankShaft - это уже не так, потому что теперь движок V8 разные, а код, который работает быстрее на CrankShaft, не обязательно гарантированно работает быстрее на TurboFan.

Если мой ответ слишком многословный, отличный комментарий на NodeJS Benchmarks, который может более подробно описать его:

... Я заметил, что некоторые части ядра Node сортируются в CrankshaftScript, т.е. Тщательно настраивается на материал, который работает очень хорошо в коленчатом валу.