Skip to content

Commit

Permalink
Update benchmarks with faster hardware (Core i5-4590)
Browse files Browse the repository at this point in the history
It is approximately 4x faster than the Core Q8200.
  • Loading branch information
Rémy Oudompheng committed Jul 17, 2017
1 parent a8e77dd commit 52839be
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 73 deletions.
35 changes: 19 additions & 16 deletions benchmarks/bench
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
# Benchmark of combined FFT and math/big (using threshold)
BenchmarkMul_1kb 1000000 1500 ns/op
BenchmarkMul_10kb 50000 50777 ns/op
BenchmarkMul_50kb 5000 658534 ns/op
BenchmarkMul_100kb 1000 2127534 ns/op
BenchmarkMul_1Mb 100 22391830 ns/op
BenchmarkMul_5Mb 10 133550600 ns/op
BenchmarkMul_10Mb 5 318595800 ns/op
BenchmarkMul_20Mb 5 671512800 ns/op
BenchmarkMul_50Mb 1 2451476000 ns/op
BenchmarkMul_100Mb 1 5228991000 ns/op
BenchmarkMul_1x5Mb 20 78091550 ns/op
BenchmarkMul_1x10Mb 10 164484500 ns/op
BenchmarkMul_1x20Mb 5 366846400 ns/op
BenchmarkMul_1x50Mb 1 1040516000 ns/op
BenchmarkMul_5x20Mb 5 457571200 ns/op
BenchmarkMul_5x50Mb 1 1040664000 ns/op
# Run on a Core i5-4590 (Go 1.8)
BenchmarkMul_1kb 3000000 525 ns/op
BenchmarkMul_10kb 100000 19274 ns/op
BenchmarkMul_50kb 5000 213375 ns/op
BenchmarkMul_100kb 2000 651794 ns/op
BenchmarkMul_1Mb 200 8546244 ns/op
BenchmarkMul_5Mb 30 49127283 ns/op
BenchmarkMul_10Mb 10 109888838 ns/op
BenchmarkMul_20Mb 5 227088971 ns/op
BenchmarkMul_50Mb 2 731298339 ns/op
BenchmarkMul_100Mb 1 1480340166 ns/op

BenchmarkMul_1x5Mb 50 28872973 ns/op
BenchmarkMul_1x10Mb 20 58841416 ns/op
BenchmarkMul_1x20Mb 10 124189252 ns/op
BenchmarkMul_1x50Mb 3 349402586 ns/op
BenchmarkMul_5x20Mb 10 153528843 ns/op
BenchmarkMul_5x50Mb 3 348753322 ns/op

39 changes: 17 additions & 22 deletions benchmarks/bench.big
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
BenchmarkMul_1kb 1000000 1599 ns/op
BenchmarkMul_10kb 50000 61533 ns/op
BenchmarkMul_50kb 2000 833693 ns/op
BenchmarkMul_100kb 1000 2567995 ns/op
BenchmarkMul_1Mb 20 105237800 ns/op
BenchmarkMul_5Mb 1 1272947000 ns/op
BenchmarkMul_10Mb 1 3834354000 ns/op
BenchmarkMul_20Mb 1 11514488000 ns/op
# these values are extrapolated using Karatsuba theoretical
# complexity:
# time(10Mb) = 3*time(5Mb)
# time(20Mb) = 3*time(10Mb)
# time(50Mb) = 4.27*time(20Mb)
# time(100Mb) = 3*time(50Mb)
BenchmarkMul_50Mb 1 49199945000 ns/op
BenchmarkMul_100Mb 1 147599836000 ns/op
# Benchmarks run on a Core i5-4590 (Go 1.8)
BenchmarkMul_1kb 5000000 298 ns/op
BenchmarkMul_10kb 100000 14562 ns/op
BenchmarkMul_50kb 10000 204698 ns/op
BenchmarkMul_100kb 2000 636230 ns/op
BenchmarkMul_1Mb 50 25950594 ns/op
BenchmarkMul_5Mb 5 314799939 ns/op
BenchmarkMul_10Mb 2 943065686 ns/op
BenchmarkMul_20Mb 1 2837283743 ns/op
BenchmarkMul_50Mb 1 14329431306 ns/op
BenchmarkMul_100Mb 1 42590328264 ns/op

BenchmarkMul_1x5Mb 20 507268000 ns/op
BenchmarkMul_1x10Mb 1 1002801000 ns/op
BenchmarkMul_1x20Mb 1 1988546000 ns/op
BenchmarkMul_1x50Mb 1 4940572000 ns/op
BenchmarkMul_5x20Mb 1 5011810000 ns/op
BenchmarkMul_5x50Mb 1 12449508000 ns/op
BenchmarkMul_1x5Mb 10 126106007 ns/op
BenchmarkMul_1x10Mb 5 248876061 ns/op
BenchmarkMul_1x20Mb 3 492849546 ns/op
BenchmarkMul_1x50Mb 1 1249673962 ns/op
BenchmarkMul_5x20Mb 1 1261943492 ns/op
BenchmarkMul_5x50Mb 1 3098019651 ns/op

33 changes: 17 additions & 16 deletions benchmarks/bench.fft
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# Benchmarks using the mulFFT function only.
BenchmarkMul_1kb 100000 29659 ns/op
BenchmarkMul_10kb 10000 292823 ns/op
BenchmarkMul_50kb 1000 1673191 ns/op
BenchmarkMul_100kb 1000 2609174 ns/op
BenchmarkMul_1Mb 50 28511840 ns/op
BenchmarkMul_5Mb 10 168610100 ns/op
BenchmarkMul_10Mb 5 403888600 ns/op
BenchmarkMul_20Mb 5 849141200 ns/op
BenchmarkMul_50Mb 1 2922353000 ns/op
BenchmarkMul_100Mb 1 5970592000 ns/op
# Run on a Core i5-4590 (Go 1.8)
BenchmarkMul_1kb 200000 9737 ns/op
BenchmarkMul_10kb 10000 105408 ns/op
BenchmarkMul_50kb 3000 584090 ns/op
BenchmarkMul_100kb 2000 973130 ns/op
BenchmarkMul_1Mb 200 8622463 ns/op
BenchmarkMul_5Mb 30 48602728 ns/op
BenchmarkMul_10Mb 10 109184721 ns/op
BenchmarkMul_20Mb 5 227053895 ns/op
BenchmarkMul_50Mb 2 727421044 ns/op
BenchmarkMul_100Mb 1 1550029484 ns/op

BenchmarkMul_1x5Mb 100 99174500 ns/op
BenchmarkMul_1x10Mb 10 207445000 ns/op
BenchmarkMul_1x20Mb 5 463875000 ns/op
BenchmarkMul_1x50Mb 1 1341762000 ns/op
BenchmarkMul_5x20Mb 5 575246400 ns/op
BenchmarkMul_5x50Mb 1 1326256000 ns/op
BenchmarkMul_1x5Mb 50 28827150 ns/op
BenchmarkMul_1x10Mb 20 58097775 ns/op
BenchmarkMul_1x20Mb 10 124998246 ns/op
BenchmarkMul_1x50Mb 3 350045770 ns/op
BenchmarkMul_5x20Mb 10 160220847 ns/op
BenchmarkMul_5x50Mb 3 350824154 ns/op

33 changes: 17 additions & 16 deletions benchmarks/bench.gmp
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
# These benchamrks were realised using gmpbench at
# http://gmplib.org/gmpbench.html
# and converted to the go test output format.
BenchmarkMul_1kb 18460846 536 ns/op
BenchmarkMul_10kb 374920 26669 ns/op
BenchmarkMul_50kb 38936 252270 ns/op
BenchmarkMul_100kb 14505 686813 ns/op
BenchmarkMul_1Mb 836 12100000 ns/op
BenchmarkMul_5Mb 88 111731843 ns/op
BenchmarkMul_10Mb 48 212314000 ns/op
BenchmarkMul_20Mb 21 490196000 ns/op
BenchmarkMul_50Mb 8 1280000000 ns/op
BenchmarkMul_100Mb 4 2673000000 ns/op
# Numbers are for a Core i5-4590 with GMP 6.1.2
BenchmarkMul_1kb 47143107 175 ns/op
BenchmarkMul_10kb 1321291 7573 ns/op
BenchmarkMul_50kb 125645 79693 ns/op
BenchmarkMul_100kb 47298 211500 ns/op
BenchmarkMul_1Mb 2950 3344500 ns/op
BenchmarkMul_5Mb 413 23920000 ns/op
BenchmarkMul_10Mb 164 60606000 ns/op
BenchmarkMul_20Mb 78 127700000 ns/op
BenchmarkMul_50Mb 8 352100000 ns/op
BenchmarkMul_100Mb 4 746270000 ns/op

BenchmarkMul_1x5Mb 151 66225165 ns/op
BenchmarkMul_1x10Mb 111 90909000 ns/op
BenchmarkMul_1x20Mb 59 176678000 ns/op
BenchmarkMul_1x50Mb 23 434782000 ns/op
BenchmarkMul_5x20Mb 35 289855000 ns/op
BenchmarkMul_5x50Mb 14 746269000 ns/op
BenchmarkMul_1x5Mb 884 11670000 ns/op
BenchmarkMul_1x10Mb 337 27174000 ns/op
BenchmarkMul_1x20Mb 195 52630000 ns/op
BenchmarkMul_1x50Mb 70 131000000 ns/op
BenchmarkMul_5x20Mb 134 74188000 ns/op
BenchmarkMul_5x50Mb 49 207770000 ns/op
5 changes: 2 additions & 3 deletions fft_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,8 @@ func BenchmarkMulBig_1Mb(b *testing.B) { benchmarkMulBig(b, 1e6, 1e6) }
func BenchmarkMulBig_5Mb(b *testing.B) { benchmarkMulBig(b, 5e6, 5e6) }
func BenchmarkMulBig_10Mb(b *testing.B) { benchmarkMulBig(b, 10e6, 10e6) }
func BenchmarkMulBig_20Mb(b *testing.B) { benchmarkMulBig(b, 20e6, 20e6) }

// 50Mb multiplication takes about 1 minute.
//func BenchmarkMulBig_50Mb(b *testing.B) { benchmarkMulBig(b, 50e6, 50e6) }
func BenchmarkMulBig_50Mb(b *testing.B) { benchmarkMulBig(b, 50e6, 50e6) }
func BenchmarkMulBig_100Mb(b *testing.B) { benchmarkMulBig(b, 100e6, 100e6) }

func BenchmarkMulFFT_1kb(b *testing.B) { benchmarkMulFFT(b, 1e3, 1e3) }
func BenchmarkMulFFT_10kb(b *testing.B) { benchmarkMulFFT(b, 1e4, 1e4) }
Expand Down

0 comments on commit 52839be

Please sign in to comment.