
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 06/10/2010 05:45 PM, Simonson, Lucanus J wrote:
[...] The library is designed for large integers -- something that's usually noticeably larger than 65 bits -- so it probably won't be optimal for really small integers like that. It'll get the job done though, so I don't consider that a problem.
There is a sort of odd dynamic here. On the one hand we all care about performance. On the other there is no way to implement this library in C++ to be efficient on modern hardware because the C++ standard doesn't provide access to integer overflow flags and the compilers are next to worthless for vectorizing general code.
That's why I specified that I was aiming for the fastest implementation I could get in pure C++.
Obviously no one expects you to special case the hardware at run time and provide inline assembly where it is warrented, however, where do we draw the line and say "past this line we do care about performance."
Everyone will draw the line somewhere different. As the developer of the library, I balance code speed against the difficulty of writing and maintaining the library -- a feature that would give a 2% improvement in speed, but double the time it takes to write or update the library, is definitely off the menu. One that would double operational speed for that price is definitely *on* the menu. There's a lot of room in between those.
A performance delta of 10X is not unreasonable between this library and GMP with hand crafted SSE assembly code that takes advantage of overflow flags competing with whatever scalar code the compiler manages to produce, so I suppose we can set performance completely aside for now and focus on the interface. However, the issue will certainly come up during review.
Any reasonable reviewer will understand that, as XInt is less than six months old and is being developed by a single person, it isn't likely to be anywhere near GMP's performance. Unreasonable reviewers need not apply. ;-) - -- Chad Nelson Oak Circle Software, Inc. * * * -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkwRYxgACgkQp9x9jeZ9/wR7UgCfTJQLhfCTMlChJD/o/7//bfYD TckAoPa8/7cHXxYlZXMK+j5G6VnP1V7P =RZe0 -----END PGP SIGNATURE-----