[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24603: [RFC 16/18] Refactor character class checking; optimise ASCII
From: |
Michal Nazarewicz |
Subject: |
bug#24603: [RFC 16/18] Refactor character class checking; optimise ASCII case |
Date: |
Tue, 20 Dec 2016 15:32:27 +0100 |
User-agent: |
Notmuch/0.19+53~g2e63a09 (http://notmuchmail.org) Emacs/26.0.50.2 (x86_64-unknown-linux-gnu) |
Sorry about the delay. I hope I’ll have some time during Xmas to work
on this more.
On Sun, Nov 06 2016, Eli Zaretskii wrote:
>> From: Michal Nazarewicz <mina86@mina86.com>
>> Cc: 24603@debbugs.gnu.org
>> Date: Sun, 06 Nov 2016 20:26:11 +0100
>>
>> On Tue, Oct 04 2016, Eli Zaretskii wrote:
>> > Thanks. I think this change will require a benchmark to make sure we
>> > don't lose too much in terms of performance.
>>
>> Benchmark and its results included below.
>>
>> It’s a bit noisy and as all benchmarks of that kind it doesn’t really
>> measure the real usage, but I think it’s safe to say that things aren’t
>> getting worse.
>
> Thanks. What happened here:
>
>> ==== Refactor character class checking; optimise ASCII case ====
>> alnum 54.643 54.301 56.668 56.898
>> alpha 54.654 54.558 56.134 56.281
>> digit 26.103 26.044 0.495 0.443
>> xdigit 25.606 25.690 0.815 0.806
>> upper 83.269 83.306 36.704 36.487
>> lower 56.278 55.804 54.872 54.917
>> word 34.820 55.092 99.577 100.618
> ^^^^^^
> Is this slow-down real?
I’ve re-run the benchmarks five times and took averages. Based on that,
this slow-down does not appear to be real, but it seems there are some
other which I haven’t noticed previously:
Class [[:cc:]] no-case [^[:cc:]]
no-case
--------- -------------------- -------------------- --------------------
--------------------
alnum 56.772 54.973 58.132
58.388
-1.385 -2.44% 0.571 +1.04% -0.041 -0.07%
-0.346 -0.59%
-1.539 -2.71% 0.198 +0.36% -0.967 -1.66%
-1.272 -2.18%
-3.017 -5.31% 2.990 +5.44% -1.013 -1.74%
-1.681 -2.88%
-3.850 -6.78% -1.229 -2.24% -0.086 -0.15%
-1.453 -2.49%
--------- -------------------- -------------------- --------------------
--------------------
alpha 54.386 54.380 56.698
58.332
1.135 +2.09% 0.892 +1.64% 0.587 +1.04%
0.667 +1.14%
1.052 +1.93% 1.108 +2.04% 0.661 +1.17%
-1.555 -2.67%
-0.338 -0.62% -0.235 -0.43% -0.363 -0.64%
-1.788 -3.06%
-1.068 -1.96% -0.541 -1.00% -0.182 -0.32%
-2.659 -4.56%
--------- -------------------- -------------------- --------------------
--------------------
digit 26.416 26.574 0.454
0.455
0.203 +0.77% -0.030 -0.11% -0.010 -2.20%
-0.007 -1.58%
0.138 +0.52% -0.013 -0.05% -0.006 -1.28%
-0.008 -1.71%
-0.021 -0.08% -0.161 -0.61% -0.014 -3.08%
-0.018 -4.04%
-0.293 -1.11% -0.417 -1.57% -0.003 -0.57%
-0.009 -2.02%
--------- -------------------- -------------------- --------------------
--------------------
xdigit 26.015 25.956 0.902
0.898
0.194 +0.75% 0.186 +0.72% -0.074 -8.20%
-0.075 -8.33%
1.092 +4.20% 0.191 +0.74% -0.073 -8.13%
-0.070 -7.84%
-0.003 -0.01% 0.239 +0.92% -0.084 -9.35%
-0.083 -9.22%
-0.345 -1.32% -0.124 -0.48% -0.069 -7.62%
-0.060 -6.64%
--------- -------------------- -------------------- --------------------
--------------------
upper 83.257 82.562 41.189
41.284
3.298 +3.96% 0.683 +0.83% -4.733 -11.49%
-3.970 -9.62%
1.791 +2.15% 3.616 +4.38% -3.875 -9.41%
-3.845 -9.31%
0.045 +0.05% 5.854 +7.09% -8.977 -21.80%
-9.105 -22.05%
-28.204 -33.88% -27.548 -33.37% 13.052 +31.69%
12.946 +31.36%
--------- -------------------- -------------------- --------------------
--------------------
lower 64.299 64.218 61.111
62.093
-7.671 -11.93% -8.443 -13.15% -6.356 -10.40%
-7.320 -11.79%
-7.251 -11.28% -5.967 -9.29% -5.593 -9.15%
-6.500 -10.47%
-7.901 -12.29% -8.447 -13.15% -6.268 -10.26%
-7.304 -11.76%
-9.213 -14.33% -9.183 -14.30% -4.879 -7.98%
-7.422 -11.95%
--------- -------------------- -------------------- --------------------
--------------------
word 35.618 37.086 104.661
105.706
0.198 +0.55% -1.206 -3.25% 1.497 +1.43%
2.618 +2.48%
0.614 +1.72% 0.263 +0.71% 1.618 +1.55%
2.099 +1.99%
0.692 +1.94% -0.403 -1.09% -2.975 -2.84%
-3.099 -2.93%
-1.210 -3.40% -1.759 -4.74% -3.491 -3.34%
-3.722 -3.52%
--------- -------------------- -------------------- --------------------
--------------------
punct 107.447 107.661 33.509
33.453
3.037 +2.83% 1.931 +1.79% 0.640 +1.91%
0.596 +1.78%
3.106 +2.89% 4.309 +4.00% 0.539 +1.61%
0.680 +2.03%
-0.588 -0.55% 3.730 +3.46% -1.138 -3.40%
-1.046 -3.13%
1.013 +0.94% 2.857 +2.65% 1.679 +5.01%
-1.142 -3.41%
--------- -------------------- -------------------- --------------------
--------------------
cntrl 25.770 25.718 1.246
1.229
0.115 +0.45% 0.150 +0.58% -0.068 -5.47%
-0.063 -5.11%
0.031 +0.12% 0.112 +0.44% -0.087 -7.00%
-0.057 -4.64%
-0.089 -0.35% -0.034 -0.13% -0.103 -8.30%
-0.088 -7.16%
-0.410 -1.59% -0.334 -1.30% -0.047 -3.77%
-0.043 -3.53%
--------- -------------------- -------------------- --------------------
--------------------
graph 23.703 23.595 69.221
70.017
0.306 +1.29% 0.245 +1.04% 0.592 +0.85%
-0.146 -0.21%
1.838 +7.75% 0.641 +2.71% 0.517 +0.75%
-0.316 -0.45%
4.503 +19.00% 4.599 +19.49% 13.219 +19.10%
15.108 +21.58%
6.628 +27.96% 4.209 +17.84% 12.004 +17.34%
11.160 +15.94%
--------- -------------------- -------------------- --------------------
--------------------
print 22.798 22.781 69.873
69.795
0.670 +2.94% 0.607 +2.67% 0.826 +1.18%
0.699 +1.00%
1.225 +5.37% 1.171 +5.14% 2.049 +2.93%
1.427 +2.04%
4.540 +19.91% 4.574 +20.08% 14.046 +20.10%
17.268 +24.74%
4.178 +18.33% 4.188 +18.38% 12.189 +17.44%
12.351 +17.70%
--------- -------------------- -------------------- --------------------
--------------------
space 141.314 144.661 1.130
1.125
0.331 +0.23% -3.395 -2.35% 0.011 +0.99%
0.011 +0.94%
2.535 +1.79% 0.202 +0.14% 0.029 +2.53%
0.029 +2.60%
-5.808 -4.11% -6.856 -4.74% -0.001 -0.11%
0.076 +6.79%
-6.470 -4.58% -9.847 -6.81% 0.010 +0.85%
0.005 +0.48%
--------- -------------------- -------------------- --------------------
--------------------
blank 26.706 26.740 0.183
0.181
0.147 +0.55% -0.009 -0.04% 0.003 +1.74%
0.004 +2.10%
1.461 +5.47% 0.091 +0.34% 0.006 +3.05%
0.007 +3.99%
3.021 +11.31% 0.591 +2.21% -0.002 -0.98%
0.000 +0.11%
-0.305 -1.14% -0.372 -1.39% -0.001 -0.33%
0.000 +0.22%
--------- -------------------- -------------------- --------------------
--------------------
ascii 22.202 22.140 4.722
4.751
0.489 +2.20% 0.601 +2.71% -0.493 -10.44%
-0.436 -9.18%
0.625 +2.81% 0.597 +2.69% -0.397 -8.41%
-0.436 -9.18%
0.348 +1.57% 1.043 +4.71% 0.287 +6.08%
0.249 +5.25%
-0.033 -0.15% 0.826 +3.73% 0.398 +8.42%
0.251 +5.29%
--------- -------------------- -------------------- --------------------
--------------------
nonascii 5.586 5.544 85.792
83.721
-0.392 -7.02% -0.405 -7.30% 5.600 +6.53%
1.420 +1.70%
-0.459 -8.21% 0.213 +3.84% 5.553 +6.47%
3.031 +3.62%
0.461 +8.25% -0.144 -2.59% 4.086 +4.76%
1.803 +2.15%
-0.368 -6.58% -0.296 -5.35% -0.947 -1.10%
1.088 +1.30%
--------- -------------------- -------------------- --------------------
--------------------
unibyte 22.166 22.172 5.299
5.403
0.545 +2.46% 0.533 +2.40% -1.041 -19.65%
-1.140 -21.09%
1.187 +5.36% 0.843 +3.80% -1.068 -20.16%
-1.182 -21.87%
0.429 +1.94% 0.385 +1.74% -1.043 -19.69%
-1.163 -21.52%
0.237 +1.07% 0.063 +0.28% -0.915 -17.26%
-1.025 -18.98%
--------- -------------------- -------------------- --------------------
--------------------
multibyte 6.031 5.571 83.834
85.391
-0.875 -14.50% -0.432 -7.75% 1.855 +2.21%
-0.073 -0.09%
-0.902 -14.96% -0.440 -7.89% 7.195 +8.58%
1.665 +1.95%
-0.904 -14.99% -0.531 -9.53% 2.005 +2.39%
0.094 +0.11%
-0.786 -13.03% -0.336 -6.04% 0.692 +0.83%
1.607 +1.88%
--------- -------------------- -------------------- --------------------
--------------------
...all... 0.928 0.927 89.115
89.857
0.080 +8.60% 0.076 +8.22% -0.314 -0.35%
5.126 +5.70%
0.058 +6.23% 0.058 +6.30% -0.304 -0.34%
0.038 +0.04%
0.002 +0.19% 0.001 +0.11% -0.413 -0.46%
-1.742 -1.94%
0.037 +3.97% 0.034 +3.64% 0.824 +0.92%
-1.253 -1.39%
(The first line in each group are absolute results with Emacs before my
changes. The other groups show absolute and relative change to that
baseline (i.e. negative is good)).
Slow-downs in intermediate commits aren’t that big of an issue as long
as the last line shows an improvement (or at least negligible
regression) but sadly that is not always the case.
As can be seen, [[:graph:]] slows-down by almost 28% :( and I don’t
quite understand where all that can come from.
--
Best regards
ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ
«If at first you don’t succeed, give up skydiving»
- bug#24603: [RFC 16/18] Refactor character class checking; optimise ASCII case,
Michal Nazarewicz <=