This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
handy.h: Change some macros to use new inRANGE
authorKarl Williamson <khw@cpan.org>
Thu, 21 Mar 2019 16:14:37 +0000 (10:14 -0600)
committerKarl Williamson <khw@cpan.org>
Thu, 21 Mar 2019 17:17:45 +0000 (11:17 -0600)
commitb877c1ff7374e89bad1d494c2a847af552d40782
tree9da370e4f3142527ffb727f2347592c43fc275cd
parent305fe86ebe53ebaec4b94533f37a83774647e346
handy.h: Change some macros to use new inRANGE

It turns out that on ASCII platforms, several of the character classes
are expressible as a single range, and using the new inRANGE macro saves
some instructions each time versus the array lookup still done for these
on EBCDIC platforms.  Here is a sample benchmark

Key:
    Ir   Instruction read
    Dr   Data read
    Dw   Data write
    COND conditional branches
    IND  indirect branches

The numbers represent raw counts per loop iteration.

isDIGIT_A('5')

       blead  hack Ratio %
       ----- ----- -------
    Ir 358.0 355.0   100.8
    Dr 123.0 121.0   101.7
    Dw  57.0  57.0   100.0
  COND  51.0  50.0   102.0
   IND   7.0   7.0   100.0

The differences are small, but these macros are executed ubiquitously
handy.h