On 9 April 2013 03:35, Ants Aasma <a...@cybertec.at> wrote: > On Fri, Apr 5, 2013 at 9:39 PM, Ants Aasma <a...@cybertec.at> wrote: > > Unless somebody tells me not to waste my time I'll go ahead and come > > up with a workable patch by Monday. > > And here you go. I decided to be verbose with the comments as it's > easier to delete a comment to write one. I also left in a huge jumble > of macros to calculate the contents of a helper var during compile > time. This can easily be replaced with the calculated values once we > settle on specific parameters. >
Thanks. Would you mind reworking the patch so that you aren't removing the existing code, only IFDEFing it out of the way. I'd like to make it as easy as possible to skip your implementation for both us and the use of the code, and/or add another implementation also. > Currently only x86-64 is implemented. 32bit x86 would be mostly a > copy-and-paste job, replacing 64bit pointer registers with 32bit ones. > For other platforms the simplest way would be to use a vectorizing > compiler on the generic variant. -funroll-loops -ftree-vectorize is > enough on gcc. > > Quick bench results on the worst case workload: > master no checksums: tps = 15.561848 > master with checksums: tps = 1.695450 > simd checksums: tps = 14.602698 Could you also re-summarise everything you've said so far on this? I want to make sure this has everyone's attention, knowledge and consent before we consider applying. We would also need most of that in a README to ensure we don't forget. -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services