-
Notifications
You must be signed in to change notification settings - Fork 0
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
Slower performance for 32-bit integers #1
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you for creating this wonderful library!
I compared the performance to other similar libraries/programs and it is significantly faster for larger 128-bit integers. For example, compared to GNU factor, it is over 330× faster:
For a couple of 128-bit integers with large 64-bit factors (from the GNU test suite), it is almost 2,000× faster:
However, for smaller integers under 32-bits, it seems to be up to 11× slower than GNU factor:
It seems to get progressively faster as the integers get larger. For integers less than 104, it is about 10.9× slower, for 105 about 8.1× slower, for 106 about 7.2× slower, for 107 about 6.9× slower and for 108 about 4.6× slower.
The above benchmarks were created with my Benchmarking Tool and include the system GNU factor (
factor
), a locally compiled version of GNU factor with-O3
and LTO enabled (./gnu/factor
), uutils' Rust port of GNU factor (./uu/factor
), a simple wrapper program for this library adapted from your example without CMake compiled with both GCC (./factoring/gcc_example
) and Clang (./factoring/clang_example
) and with inline ASM enabled, and lastly my simple Numbers Tool program which includes a partial C++ port of GNU factor (./numbers -p
).Hopefully I am using your library correctly to get maximum performance. For reference, the wrapper program I wrote for your library is available here: https://gist.github.com/tdulcet/6393865769644aaf9244561f3eb4e9c2. The commands I used to compile and run it are on top of the file. I used GCC 11.4 and Clang 14.0. Note that Clang did generate 42 compiler warnings, but in my benchmarking it was always faster than GCC with your library.
The text was updated successfully, but these errors were encountered: