-
Notifications
You must be signed in to change notification settings - Fork 156
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
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: