Re: Speed up COPY FROM text/CSV parsing using SIMD

From: Manni Wood <manni(dot)wood(at)enterprisedb(dot)com>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>, KAZAR Ayoub <ma_kazar(at)esi(dot)dz>, Neil Conway <neil(dot)conway(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Shinya Kato <shinya11(dot)kato(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Speed up COPY FROM text/CSV parsing using SIMD
Date: 2026-03-13 02:39:38
Message-ID: CAKWEB6pMbdMDvhfaX1Z0eSULVQFYhEhssaRHdOxAX_5OYubxKw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Mar 12, 2026 at 12:37 PM Nathan Bossart <nathandbossart(at)gmail(dot)com>
wrote:

> Here is what I have staged for commit, which I'm planning to do tomorrow.
> Please review and/or test if you are able.
>
> --
> nathan
>

Hello, Nathan!

I found some time this evening to run some benchmarks using your v15 patch.
I hope these help.

lz4 - arm

arm NARROW master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = lz4
TXT : 10203.493250 ms
CSV : 10217.946000 ms
TXT with 1/3 escapes: 10305.912750 ms
CSV with 1/3 quotes: 12339.182000 ms

arm NARROW v15 default_toast_compression = lz4
TXT : 10205.261500 ms -0.017330% regression
CSV : 10358.898500 ms -1.379460% regression
TXT with 1/3 escapes: 10053.073000 ms 2.453347% improvement
CSV with 1/3 quotes: 11881.337000 ms 3.710497% improvement

arm WIDE master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = lz4
TXT : 5613.525250 ms
CSV : 8069.692750 ms
TXT with 1/3 escapes: 7088.888250 ms
CSV with 1/3 quotes: 10902.545500 ms

arm WIDE v15 default_toast_compression = lz4
TXT : 3201.494500 ms 42.968200% improvement
CSV : 3146.033750 ms 61.014207% improvement
TXT with 1/3 escapes: 6677.907500 ms 5.797535% improvement
CSV with 1/3 quotes: 10766.909500 ms 1.244076% improvement

lz4 - x86

x86 NARROW master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = lz4
TXT : 26110.287750 ms
CSV : 27923.199750 ms
TXT with 1/3 escapes: 27984.483250 ms
CSV with 1/3 quotes: 34387.239000 ms

x86 NARROW v15 default_toast_compression = lz4
TXT : 26019.629000 ms 0.347215% improvement
CSV : 26379.889000 ms 5.526984% improvement
TXT with 1/3 escapes: 28865.322750 ms -3.147600% regression
CSV with 1/3 quotes: 33218.293250 ms 3.399359% improvement

x86 WIDE master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = lz4
TXT : 15829.765000 ms
CSV : 20479.146000 ms
TXT with 1/3 escapes: 18437.507500 ms
CSV with 1/3 quotes: 29749.379250 ms

x86 WIDE v15 default_toast_compression = lz4
TXT : 8056.305000 ms 49.106604% improvement
CSV : 7997.555500 ms 60.947808% improvement
TXT with 1/3 escapes: 16324.925500 ms 11.458067% improvement
CSV with 1/3 quotes: 29978.346500 ms -0.769654% regression

pglz - arm

arm NARROW master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = pglz
TXT : 10334.666250 ms
CSV : 10978.851250 ms
TXT with 1/3 escapes: 11076.502750 ms
CSV with 1/3 quotes: 12582.679000 ms

arm NARROW v15 default_toast_compression = pglz
TXT : 10002.507750 ms 3.214023% improvement
CSV : 10017.436250 ms 8.756973% improvement
TXT with 1/3 escapes: 10179.949000 ms 8.094195% improvement
CSV with 1/3 quotes: 12088.836750 ms 3.924778% improvement

arm WIDE master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = pglz
TXT : 11403.206000 ms
CSV : 13915.718750 ms
TXT with 1/3 escapes: 12888.060250 ms
CSV with 1/3 quotes: 16741.463000 ms

arm WIDE v15 default_toast_compression = pglz
TXT : 9005.868250 ms 21.023366% improvement
CSV : 8935.159250 ms 35.790889% improvement
TXT with 1/3 escapes: 12432.655250 ms 3.533542% improvement
CSV with 1/3 quotes: 16564.852250 ms 1.054930% improvement

pglz - x86

x86 NARROW master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = pglz
TXT : 26404.516250 ms
CSV : 28138.719000 ms
TXT with 1/3 escapes: 28084.379750 ms
CSV with 1/3 quotes: 34502.702250 ms

x86 NARROW v15 default_toast_compression = pglz
TXT : 26438.415000 ms -0.128382% regression
CSV : 26869.718000 ms 4.509804% improvement
TXT with 1/3 escapes: 29379.299750 ms -4.610819% regression
CSV with 1/3 quotes: 33371.390250 ms 3.278908% improvement

x86 WIDE master (git revert dc592a41557b072178f1798700bf9c69cd8e4235)
default_toast_compression = pglz
TXT : 30595.372000 ms
CSV : 35665.908500 ms
TXT with 1/3 escapes: 32746.252000 ms
CSV with 1/3 quotes: 44136.542750 ms

x86 WIDE v15 default_toast_compression = pglz
TXT : 22681.770750 ms 25.865354% improvement
CSV : 22692.153000 ms 36.375789% improvement
TXT with 1/3 escapes: 30638.978000 ms 6.435161% improvement
CSV with 1/3 quotes: 44330.233000 ms -0.438843% regression
--
-- Manni Wood EDB: https://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Xuneng Zhou 2026-03-13 02:39:52 Re: Streamify more code paths
Previous Message Chao Li 2026-03-13 02:15:46 Re: pg_stat_replication.*_lag sometimes shows NULL during active replication