bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

new module 'mbiterf'


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.

Attachment: 0001-mbiterf-New-module.patch
Description: Text Data

Attachment: 0002-mbiterf-Add-a-benchmark.patch
Description: Text Data

Attachment: 0003-mbsnlen-Optimize.patch
Description: Text Data

Attachment: 0004-mbmemcasecmp-Optimize.patch
Description: Text Data

Attachment: 0005-trim-Optimize.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]