Ответ 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" ). Как и в этих проблемах:
- https://github.com/nodejs/node/issues/11851#issuecomment-287253082
- https://github.com/nodejs/CTC/issues/146#issuecomment-310229393
- https://twitter.com/matteocollina/status/870580613266501632
По этим причинам сообщество Node.js активно работает над вырезанием экземпляров CrankShaftScript в w631>.js, а также в общих пакетах npm. Это должно помочь альтернативным Node.js дистрибутивам, таким как node -chakracore, лучше выполнять и облегчать риск будущих обновлений для среды выполнения JavaScript в Node.js.