|
23 | 23 | <para> |
24 | 24 | Just-in-time compilation (<acronym>JIT</acronym>) is the process of turning |
25 | 25 | some form of interpreted program evaluation into a native program, and |
26 | | - doing so at runtime. |
| 26 | + doing so at run time. |
27 | 27 |
|
28 | 28 | For example, instead of using a facility that can evaluate arbitrary SQL |
29 | 29 | expressions to evaluate an SQL predicate like <literal>WHERE a.col = |
|
81 | 81 | <title>Inlining</title> |
82 | 82 | <para> |
83 | 83 | <productname>PostgreSQL</productname> is very extensible and allows new |
84 | | - datatypes, functions, operators and other database objects to be defined; |
| 84 | + data types, functions, operators and other database objects to be defined; |
85 | 85 | see <xref linkend="extend"/>. In fact the built-in ones are implemented |
86 | 86 | using nearly the same mechanisms. This extensibility implies some |
87 | 87 | overhead, for example due to function calls (see <xref linkend="xfunc"/>). |
|
110 | 110 | </para> |
111 | 111 |
|
112 | 112 | <para> |
113 | | - The cost of the query will be compared with <xref |
114 | | - linkend="guc-jit-above-cost"/> GUC. If the cost is higher, |
| 113 | + The cost of the query will be compared with the setting of <xref |
| 114 | + linkend="guc-jit-above-cost"/>. If the cost is higher, |
115 | 115 | <acronym>JIT</acronym> compilation will be performed. |
116 | 116 | </para> |
117 | 117 |
|
118 | 118 | <para> |
119 | 119 | If the planner, based on the above criterion, decided that |
120 | 120 | <acronym>JIT</acronym> compilation is beneficial, two further decisions are |
121 | | - made. Firstly, if the query is more costly than the <xref |
122 | | - linkend="guc-jit-optimize-above-cost"/> GUC, expensive optimizations are |
| 121 | + made. Firstly, if the query is more costly than the setting of <xref |
| 122 | + linkend="guc-jit-optimize-above-cost"/>, expensive optimizations are |
123 | 123 | used to improve the generated code. Secondly, if the query is more costly |
124 | | - than the <xref linkend="guc-jit-inline-above-cost"/> GUC, short functions |
| 124 | + than the setting of <xref linkend="guc-jit-inline-above-cost"/>, short functions |
125 | 125 | and operators used in the query will be inlined. Both of these operations |
126 | 126 | increase the <acronym>JIT</acronym> overhead, but can reduce query |
127 | 127 | execution time considerably. |
|
131 | 131 | This cost based decision will be made at plan time, not execution |
132 | 132 | time. This means that when prepared statements are in use, and the generic |
133 | 133 | plan is used (see <xref linkend="sql-prepare-notes"/>), the values of the |
134 | | - GUCs set at prepare time take effect, not the settings at execution time. |
| 134 | + configuration parameters set at prepare time take effect, not the settings at execution time. |
135 | 135 | </para> |
136 | 136 |
|
137 | 137 | <note> |
|
208 | 208 | </para> |
209 | 209 |
|
210 | 210 | <para> |
211 | | - For development and debugging purposes a few additional GUCs exist. <xref |
| 211 | + For development and debugging purposes a few additional configuration parameters exist. <xref |
212 | 212 | linkend="guc-jit-dump-bitcode"/> allows the generated bitcode to be |
213 | 213 | inspected. <xref linkend="guc-jit-debugging-support"/> allows GDB to see |
214 | 214 | generated functions. <xref linkend="guc-jit-profiling-support"/> emits |
|
245 | 245 | to <filename>$pkglibdir/bitcode/$extension.index.bc</filename>, where |
246 | 246 | <literal>$pkglibdir</literal> is the directory returned by |
247 | 247 | <literal>pg_config --pkglibdir</literal> and <literal>$extension</literal> |
248 | | - the basename of the extension's shared library. |
| 248 | + the base name of the extension's shared library. |
249 | 249 |
|
250 | 250 | <note> |
251 | 251 | <para> |
|
264 | 264 | <productname>PostgreSQL</productname> provides a <acronym>JIT</acronym> |
265 | 265 | implementation based on <productname>LLVM</productname>. The interface to |
266 | 266 | the <acronym>JIT</acronym> provider is pluggable and the provider can be |
267 | | - changed without recompiling. The provider is chosen via the <xref |
268 | | - linkend="guc-jit-provider"/> <acronym>GUC</acronym>. |
| 267 | + changed without recompiling. The provider is chosen via the setting <xref |
| 268 | + linkend="guc-jit-provider"/>. |
269 | 269 | </para> |
270 | 270 |
|
271 | 271 | <sect3> |
|
0 commit comments