Re: WIP: Faster Expression Processing and Tuple Deforming (including JIT)
Markus Nullmeier <dq124@uni-heidelberg.de>
From: Markus Nullmeier <dq124@uni-heidelberg.de>
To: pgsql-hackers@postgresql.org
Date: 2017-02-10T17:18:13Z
Lists: pgsql-hackers
On 12/06/16 21:40, Andres Freund wrote: > On 2016-12-06 14:35:43 -0600, Nico Williams wrote: >> On Tue, Dec 06, 2016 at 12:27:51PM -0800, Andres Freund wrote: >>> On 2016-12-06 14:19:21 -0600, Nico Williams wrote: >>>>> I concur with your feeling that hand-rolled JIT is right out. But >>>> >>>> Yeah, that way lies maintenance madness. >>> >>> I'm not quite that sure about that. I had a lot of fun doing some >>> hand-rolled x86 JITing. Not that is a ward against me being mad. But >>> more seriously: Manually doing a JIT gives you a lot faster compilation >>> times, which makes JIT applicable in a lot more situations. >> >> What I meant is that each time there are new ISA extensions, or >> differences in how relevant/significant different implementations of the >> same ISA implement certain instructions, and/or every time you want to >> add a new architecture... someone has to do a lot of very low-level >> work. > > Yea, that's why I didn't pursue this path further. I *personally* think > it'd be perfectly fine to only support JITing on linux x86_64 and > aarch64 for now. And those I'd be willing to work on. But since I know > that's not project policy... Well, if this thread of thought about hand-crafted JIT should be taken up again by someone at some point in time, I guess it could be possible to reuse tools that are already out there, such as "DynASM" ( http://luajit.org/dynasm_features.html ) from the LuaJIT project (currently offers x86-64, x86-32, ARM-32, PPC-32, and MIPS-32). Maybe one could even recycle parts of the LuaJIT project itself ( http://luajit.org/luajit.html , http://article.gmane.org/gmane.comp.lang.lua.general/58908 ). -- Markus Nullmeier http://www.g-vo.org German Astrophysical Virtual Observatory (GAVO)
Commits
-
Improve performance of ExecEvalWholeRowVar.
- 2f0903ea1965 10.0 landed
-
Remove unreachable code in expression evaluation.
- ad46a2aa79f9 10.0 landed
-
Faster expression evaluation and targetlist projection.
- b8d7f053c5c2 10.0 landed
-
Avoid syntax error on platforms that have neither LOCALE_T nor ICU.
- 457a44487328 10.0 cited
-
Add configure test to see if the C compiler has gcc-style computed gotos.
- bc18126a6bcb 10.0 landed
-
Improve regression test coverage for TID scanning.
- be6c3d19fd45 10.0 landed
-
Improve expression evaluation test coverage.
- ce38949ba23a 10.0 landed
-
Fix two errors with nested CASE/WHEN constructs.
- f0c7b789ab12 9.6.0 cited