remyoudompheng/bigfft

GitHub: remyoudompheng/bigfft

基于 Schönhage-Strassen 算法和 FFT 的 Go 大整数乘法概念验证库,在超大规模数字(200kbits 以上)运算中显著优于标准库 math/big。

Stars: 86 | Forks: 19

本库是著名的 Schonhage-Strassen 大整数乘法的概念性验证玩具实现。 除了在数论计算中,它并不预期有其他实际用例,也不预期会被用于任何生产系统。 如果你正在你的项目中使用它,你可能需要仔细审视你试图解决的实际需求或问题。 # 与标准库和 GMP 的对比 math/big 与 bigfft 的基准测试 数字大小 旧 ns/op 新 ns/op 增量 1kb 1599 1640 +2.56% 10kb 61533 62170 +1.04% 50kb 833693 831051 -0.32% 100kb 2567995 2693864 +4.90% 1Mb 105237800 28446400 -72.97% 5Mb 1272947000 168554600 -86.76% 10Mb 3834354000 405120200 -89.43% 20Mb 11514488000 845081600 -92.66% 50Mb 49199945000 2893950000 -94.12% 100Mb 147599836000 5921594000 -95.99% GMP 与 bigfft 的基准测试 数字大小 GMP ns/op Go ns/op 增量 1kb 536 1500 +179.85% 10kb 26669 50777 +90.40% 50kb 252270 658534 +161.04% 100kb 686813 2127534 +209.77% 1Mb 12100000 22391830 +85.06% 5Mb 111731843 133550600 +19.53% 10Mb 212314000 318595800 +50.06% 20Mb 490196000 671512800 +36.99% 50Mb 1280000000 2451476000 +91.52% 100Mb 2673000000 5228991000 +95.62% 基准测试运行在 Core 2 Quad Q8200 (2.33GHz) 上。 当输入数字超过 200kbits 时启用 FFT。 从字符串扫描大十进制数。 (math/big [n^2 复杂度] vs bigfft [n^1.6 复杂度], Core i5-4590) 位数 旧 ns/op 新 ns/op 增量 1e3 9995 10876 +8.81% 1e4 175356 243806 +39.03% 1e5 9427422 6780545 -28.08% 1e6 1776707489 144867502 -91.85% 2e6 6865499995 346540778 -94.95% 5e6 42641034189 1069878799 -97.49% 10e6 151975273589 2693328580 -98.23%
标签:EVTX分析, 日志审计