一个 C++ 表达式 -> x64 JIT
NativeJIT 是一个开源的跨平台库,用于高性能即时编译涉及 C 数据结构的表达式。该编译器体积小、运行速度快,不依赖于标准 C++ 运行时。它可在 Linux、OSX 和 Windows 上运行。生成的代码经过优化,特别注意注册分配。
该编译器由 Bing 团队开发用于 Bing 搜索引擎。其中一个重要用途是为包含与用户查询匹配的关键词的文档评分。评分过程试图衡量每个文档与用户意图的匹配程度,因此取决于每个查询的具体表述方式。Bing 为每个查询制定了自定义表达式,然后使用 NativeJIT 将表达式编译为将在机器集群中分布的大量候选文档上运行的 x64 代码。
我们一开始就知道,在大规模处理查询时,吞吐量和延迟是至关重要的,因此我们花了大量的精力来使 NativeJIT 运行快速。我们的设计目标是以下场景: * 表达式在运行时才被确定。 * 表达式将被多次求值,以抵消编译成本。 * 延迟和吞吐量需求要求编译成本低。以下是计算圆的面积的简单"Hello, world"级别示例:
本示例展示了一个将数字乘以自身的表达式。我们还支持各种算术和逻辑运算、指针和数组运算、条件语句、访问结构域以及调用 C 函数。有关更多信息,请参阅我们的初步 API 文档和 Examples/ 目录中的更多示例。
暂无开放 Issues,或尚未同步最近议题。