Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improved gcc-9 and gcc-10 decoding speed #2630

Merged
merged 1 commit into from
May 10, 2021
Merged

improved gcc-9 and gcc-10 decoding speed #2630

merged 1 commit into from
May 10, 2021

Conversation

Cyan4973
Copy link
Contributor

@Cyan4973 Cyan4973 commented May 8, 2021

I was embarrassed that the updated decoder code
would fare measurably worse on gcc-9 and gcc-10
by 5 to 6%.

The new alignment setting is better for gcc-9 and gcc-10 by almost +5%.
Consequently, this version still decodes slower than v1.4.9 on gcc-9 and gcc-10,
but by a more negligible amount < 2%.

Unfortunately, the new setting is worse for essentially all other compilers.
Make the new alignment setting conditional to gcc-9+,
keep previous alignment setting for all other compilers.

align6+5+(3-4)             
Compiler silesia-L1 enwik8-L1 silesia-L5 enwik8-L5 enwik9-L22 enwik9-long30
gcc-7 1671 1519 1459 1205 1033 1029
gcc-8 1604 1418 1409 1152 1013 1010
gcc-9 1630 1442 1434 1176 973 971
gcc-10 1650 1456 1448 1185 919 917
clang-6.0 1543 1341 1379 1115 1037 1033
clang-7 1495 1334 1330 1098 1015 1013
clang-8 1536 1356 1317 1049 995 994
clang-9 1585 1403 1395 1131 1039 1033
clang-10 1590 1404 1387 1114 1019 1015
clang-11 1515 1337 1347 1103 1007 1004
Comparison with dev             
Compiler silesia-L1 enwik8-L1 silesia-L5 enwik8-L5 enwik9-L22 enwik9-long30
gcc-7 -0.06% -0.07% -0.07% -0.41% -0.10% -0.29%
gcc-8 -0.12% -0.21% -0.14% -0.60% -0.10% -0.10%
gcc-9 2.64% 1.91% 5.44% 6.33% -0.10% 0.00%
gcc-10 2.87% 2.32% 5.62% 5.99% 0.11% 0.00%
clang-6.0 0.06% -0.45% -0.22% 0.00% 0.10% -0.10%
clang-7 -0.13% -0.07% 0.00% -0.18% -2.96% -2.50%
clang-8 -0.19% -0.59% 0.00% -0.29% -1.29% -1.09%
clang-9 -0.13% -0.28% -0.07% -0.09% 0.29% 0.00%
clang-10 0.00% -0.35% -0.86% -1.68% -0.39% -0.59%
clang-11 -0.07% -0.15% 0.15% 0.36% 0.30% 0.10%
average 0.49% 0.21% 0.98% 0.94% -0.41% -0.46%

As expected, the change is mostly neutral for all other compilers
(one can safely ignore anything <1% as "noise"),
only gcc-9 and gcc-10 in "normal" mode are favorably impacted, and by a nice margin.

the new alignment setting is better for gcc-9 and gcc-10
by about ~+5%.

Unfortunately, it's worse for essentially all other compilers.

Make the new alignment setting conditional to gcc-9+.
@Cyan4973 Cyan4973 merged commit 9fb5a04 into dev May 10, 2021
@Cyan4973 Cyan4973 deleted the gcc9 branch December 9, 2021 00:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants