举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > PostgreSQL 什么是JIT编译?

PostgreSQL 什么是JIT编译?

2023-04-14 15:31

 PostgreSQL 什么是JIT编译?

31.1.1. JIT加速的操作
31.1.2. 内联
31.1.3. 优化

即时(Just-In-Time,JIT)编译是将某种形式的解释程序计算转变成原生程序的过程,并且这一过程是在运行时完成的。例如,与使用能够计算任意SQL表达式的通用代码来计算一个特定的SQL谓词(如WHERE a.col = 3)不同,可以产生一个专门针对该表达式的函数并且可以由CPU原生执行,从而得到加速。

当使用--with-llvm编译PostgreSQL后,PostgreSQL内建支持用LLVM执行JIT编译。

进一步的细节请参考src/backend/jit/README

31.1.1. JIT加速的操作

当前,PostgreSQL的JIT实现支持对表达式计算以及元组拆解的加速。未来可能有更多其他操作采用这种技术加速。

表达式计算被用来计算WHERE子句、目标列表、聚集以及投影。通过为每一种情况生成专门的代码来实现加速。

元组拆解是把一个磁盘上的元组(见第 68.6.1 节)转换成其在内存中表示的过程。通过创建一个专门针对该表布局和要被抽取的列数的函数来实现加速。

31.1.2. 内联

PostgreSQL有很好的扩展性并且允许定义新的数据类型、函数、操作符以及其他数据库对象,见第 37 章。实际上,内建对象都使用近乎完全相同的机制来实现。这种可扩展性隐含了一些开销,例如函数调用带来的开销(见第 37.3 节)。为了降低这类开销,JIT编译可以把小函数的函数体内联到使用它们的表达式中。这种方式可以优化掉可观的开销。

31.1.3. 优化

LLVM支持对生成的代码进行优化。一些优化代价很低,以至于可以在每次使用JIT时都执行,而另一些优化则只有在运行时间较长的查询中才能获益。更多有关优化的细节请参考https://llvm.org/docs/Passes.html#transform-passes。


阅读全文
以上是鳄鱼CMS为你收集整理的 PostgreSQL 什么是JIT编译?全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL TAP 测试

    PostgreSQL TAP 测试

    2023-04-08

    很多测试,特别是src/bin下面的客户端程序测试使用 Perl 的 TAP 工具并且用Perl测试程序prove运行。你可以通过 设置make变量PROV...

  •  PostgreSQL 例子程序

    PostgreSQL 例子程序

    2023-05-07

    这些例子和其他例子可以在源代码发布的src/test/examples目录中找到。例33.1.libpq 例子程序 1#include stdio.h#include stdlib....

  •  PostgreSQL DEALLOCATE DESCRIPTOR

    PostgreSQL DEALLOCATE DESCRIPTOR

    2023-03-30

    DEALLOCATE DESCRIPTOR — 释放一个 SQL 描述符区域大纲DEALLOCATE DESCRIPTOR name描述 DEALLOCATE DESCRIPTOR释放一个命名的 S...

  • html input date HTML DOM Input Datetime autofocus 属性

    html input date HTML DOM Input Datetime autofocus 属性

    2023-06-11

    Input Datetime autofocus 属性 Input Datetime 对象实例查看 datetime 字段是否在页面加载后自动获取焦点:var x = document.ge...

  • html form onsubmit HTML DOM Form submit() 方法

    html form onsubmit HTML DOM Form submit() 方法

    2023-06-20

    Form submit() 方法 Form 对象定义和用法submit() 方法用于提交表单 (点击 Submit 按钮)。语法formObject.submit()浏览器支持 所...

© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们