#9231 closed Bugs (fixed)
Suboptimal assignment — at Version 4
Reported by: | Domagoj Šarić | Owned by: | John Maddock |
---|---|---|---|
Milestone: | To Be Determined | Component: | multiprecision |
Version: | Boost 1.54.0 | Severity: | Optimization |
Keywords: | Cc: |
Description (last modified by )
Hi, we're using your MP library, with the cpp_int_backend and fixed sized numbers, along with the "Maybe Boost Hash" library to implement lightweight RSA signature verification (previously done with LibTomCrypt+LibTomMath), so first of all thanks for making this possible ;)
Unless otherwise stated, always assume I'm using MSVC10 32bit (with /Oxs /GL /LTCG) with the above use case (fixed sized, unchecked, unsigned cpp_ints)...
Now, onto the issues ;D
I would expect do_assign() to simply evaluate to simply std::memcpy, however it does not:
- it seems that the this->resize(other.size(), other.size()); call fails to resolve to a nop (check your code)
- why are you using "checked std::copy" instead of a straigh std::memcpy?
ps. MSVC has a very nice debugger and disassembly window so I'll refrain from posting codegen in any of my tickets.
Change History (4)
comment:1 by , 9 years ago
Component: | None → multiprecision |
---|---|
Owner: | set to |
comment:2 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:3 by , 9 years ago
Thanks... ps. did you check why this->resize(other.size(), other.size()); does not evaluate to a nop (I forgot to add that this happens in powm when it copy-constructs the double_type)_?
comment:4 by , 9 years ago
Description: | modified (diff) |
---|
(In [86258]) Optimize copying of allocator-free cpp_int's via memcpy. Fix consistency of checks for exponents < 0 in powm. Fixes #9231. Refs #9236.