代码之家  ›  专栏  ›  技术社区  ›  Matt Hargett

Node.js中的“CrankShaftScript”是什么?

  •  24
  • Matt Hargett  · 技术社区  · 7 年前

    节点中的引用越来越多。在Twitter、GitHub和Facebook的群组讨论中,将js社区添加到“CrankShaftScript”(和“CrankShaftJS”)。我想节点。js是用C++和JavaScript编写的,那么CrankShaftScript在性能回归bug中指的是什么呢

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

    3 回复  |  直到 7 年前
        1
  •  24
  •   Adam Jenkins    7 年前

    CrankShaftScript是社区给运行速度更快的JS惯用法(例如某些类型的循环)命名的在V8的曲轴发动机上。

    曲轴正被一种名为涡扇发动机的发动机所取代。多年来,开发人员编写的许多JS代码都是专门为在曲轴上快速运行而编写的(例如,用“CrankShaftScript”编写),使用了在曲轴上运行快速的已知习语-这不再是必然的情况,因为V8发动机现在不同了,在曲轴上速度最快的代码不一定保证在涡扇发动机上运行最快。

    如果我的回答过于冗长,这里有一个 great comment NodeJS Benchmarks 可能更详细的线程:

    曲轴非常好。

        2
  •  17
  •   Matt Hargett    7 年前

    曲轴脚本(CrankShaftScript)是一个社区采用的术语,用于表示非惯用和/或非标准兼容的JavaScript,这些JavaScript只能在采用曲轴JIT编译器的特定版本的v8javascript运行时中执行和/或表现良好。具体示例包括:以难以维护的方式编写的循环,以解决v8中JIT优化的不足,以及使用v8特定的内置函数/全局函数。

    这个术语最初是为了描述节点脉轮核和蜘蛛节点中的一些根性能问题,它们是节点。使用ChakraCore和SpiderMonkey运行时而不是v8的js发行版。

    现在,它被用作解释该节点的原因的速记。js 8.1发布系列更新为v8的较新版本,由于v8的曲轴JIT被涡扇发动机(有时称为“TF”)取代,在微观和宏观基准测试中出现了一些性能倒退。与这些问题一样:

        3
  •  -1
  •   SLaks    7 年前

    曲轴是V8节点的编译基础结构。js的Javascript运行时( details ).

    now being replaced by TurboFan