strncmp->memcmp when we know the shorter length
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: pgsql-hackers@postgresql.org
Date: 2010-12-20T18:10:42Z
Lists: pgsql-hackers
Attachments
- strncmp-memcmp.patch (text/plain) patch
- bench-texteq.sql (text/plain)
When the caller knows the smaller string length, memcmp and strncmp are functionally equivalent. Since memcmp need not watch each byte for a NULL terminator, it often compares a CPU word at a time for better performance. The attached patch changes use of strncmp to memcmp where we have the length of the shorter string. I was most interested in the varlena.c instances, but I tried to find all applicable call sites. To benchmark it, I used the attached "bench-texteq.sql". This patch improved my 5-run average timing of the SELECT from 65.8s to 56.9s, a 13% improvement. I can't think of a case where the change should be pessimal. Thanks, nm