Re: speed up verifying UTF-8

John Naylor <john.naylor@enterprisedb.com>

From: John Naylor <john.naylor@enterprisedb.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Amit Khandekar <amitdkhan.pg@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-06-11T00:36:14Z
Lists: pgsql-hackers
I wrote:

> Also, if SSE is accepted into the tree, then the C fallback is only
important on platforms like PowerPC64 and Arm64, so we can make the
tradeoff by testing those more carefully. I'll test on PowerPC soon.

I got around to testing on POWER8 / Linux / gcc 4.8.5 and found a
regression in the mixed2 case in v11. v12 improves that at the cost of some
improvement in the ascii case (5x vs. 8x).

master:
 chinese | mixed | ascii | mixed2
---------+-------+-------+--------
    2966 |  1525 |   871 |   1474

v11-0001:
 chinese | mixed | ascii | mixed2
---------+-------+-------+--------
    1030 |   644 |   102 |   1760

v12-0001:
 chinese | mixed | ascii | mixed2
---------+-------+-------+--------
     977 |   632 |   168 |   1113

--
John Naylor
EDB: http://www.enterprisedb.com

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Simplify coding style of is_valid_ascii()

  2. Apply auto-vectorization to the inner loop of numeric multiplication.