-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Disable num-bigint-dig/u64_digit feature on wasm targets #252
Comments
FWIW I've been working on a crate for automatic limb size selection based on the target which we can reuse among the many crates within @RustCrypto: |
@jameysharp curious what you use to benchmark WASM. It's something I've been wanting to figure out. re: automatic limb size selection it seems like it will be tougher than I thought to pick good defaults for WASM. I have been leaning towards 64-bit though I wanted to check that via benchmarks. Sidebar: |
Adds an on-by-default feature which enables `num-bigint-dig/u64_digit`. Disabling this on 32-bit platforms (e.g. WASM) should improve performance. Closes #252
Well, this isn't automatic, but it at least makes it possible to disable |
WebAssembly doesn't have 128-bit integers, so on wasm targets LLVM implements 128-bit multiplies with a libcall to
__multi3
. That's slower than just doing arithmetic on smaller units.I patched the
rsa
crate to remove theu64_digit
feature from thenum-bigint-dig
dependency, and tested the patched version with theblind-rsa-signatures
crate. The toy demo app I tested ran 15% faster under Wasmtime with this patch.It would be nice if either this crate or
num-bigint-dig
would automatically determine what limb size to use based on the build target. Barring that, perhaps this crate should expose its ownu64_digit
feature that forwards tonum-bigint-dig
.The text was updated successfully, but these errors were encountered: