|
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