|
| From: | Bruno Haible |
| Subject: | new module 'mbiterf' |
| Date: | Tue, 18 Jul 2023 12:38:03 +0200 |
This set of patches adds a new module 'mbiterf', similar to 'mbiter',
just faster. The 'f' stands for "faster" or "functional style".
Kudos to Paul Eggert for the intuition that a function that returns values
is more efficient than an equivalent function that modifies state and
returns void.
The benchmarks clearly show the speedup, especially for the case of ASCII
text (CPU time, measured on x86_64, with gcc 13, on an AMD Ryzen 7 CPU):
mbiter mbiterf
a 0.926 0.230
b 0.765 0.233
c 1.706 1.125
d 1.324 0.847
e 1.580 0.889
f 14.134 13.095
g 8.409 8.244
h 8.882 8.553
i 4.110 4.000
j 4.430 4.212
The module 'mbiter' is still recommended for more complicated code
that is not performance critical, because it has a simpler idiom.
2023-07-18 Bruno Haible <bruno@clisp.org>
trim: Optimize.
* lib/trim.c: Include mbiterf.h instead of mbiter.h.
(trim2): Use mbif_* macros instead of mbi_* macros.
* modules/trim (Depends-on): Add mbiterf. Remove mbiter.
mbmemcasecmp: Optimize.
* lib/mbmemcasecmp.c: Include mbiterf.h instead of mbiter.h.
(mbmemcasecmp): Use mbif_* macros instead of mbi_* macros.
* modules/mbmemcasecmp (Depends-on): Add mbiterf. Remove mbiter.
mbsnlen: Optimize.
* lib/mbsnlen.c: Include mbiterf.h instead of mbiter.h.
(mbsnlen): Use mbif_* macros instead of mbi_* macros.
* modules/mbsnlen (Depends-on): Add mbiterf. Remove mbiter.
mbiterf: Add a benchmark.
* tests/bench-mbiterf.c: New file, based on tests/bench-mbiter.c.
* modules/mbiterf-bench-tests: New file, based on
modules/mbiter-bench-tests.
mbiterf: New module.
* lib/mbiterf.h: New file, based on lib/mbiter.h.
* lib/mbiterf.c: New file, based on lib/mbiter.c.
* modules/mbiterf: New file, based on modules/mbiter.
0001-mbiterf-New-module.patch
Description: Text Data
0002-mbiterf-Add-a-benchmark.patch
Description: Text Data
0003-mbsnlen-Optimize.patch
Description: Text Data
0004-mbmemcasecmp-Optimize.patch
Description: Text Data
0005-trim-Optimize.patch
Description: Text Data
| [Prev in Thread] | Current Thread | [Next in Thread] |