Skip to content

Lowmem

GLaTAN requested to merge lowmem into master
  • メモリ使用量削減のため、メッセージを構造体内部に持たないように変更した。
  • 副作用としてハッシュ関数の実行が高速になった。

before(masterブランチのコードにdefaultパラメーターでベンチマークを実施する修正を淹れたもの)

test Md2::B0               ... bench:       2,933 ns/iter (+/- 71)
test Md2::B512             ... bench:      47,849 ns/iter (+/- 1,629)
test Md2::KB1              ... bench:      94,551 ns/iter (+/- 5,582)
test Md2::KB16             ... bench:   1,444,322 ns/iter (+/- 53,386)
test Md2::KB2              ... bench:     186,130 ns/iter (+/- 7,066)
test Md2::KB4              ... bench:     369,776 ns/iter (+/- 19,276)
test Md2::KB512            ... bench:  46,336,658 ns/iter (+/- 653,300)
test Md2::KB64             ... bench:   5,792,119 ns/iter (+/- 139,475)
test Md2::MB1              ... bench:  92,675,246 ns/iter (+/- 1,295,477)
test Md4::B0               ... bench:         310 ns/iter (+/- 44)
test Md4::B512             ... bench:       1,299 ns/iter (+/- 47)
test Md4::KB1              ... bench:       2,300 ns/iter (+/- 107)
test Md4::KB16             ... bench:      27,470 ns/iter (+/- 1,009)
test Md4::KB2              ... bench:       3,947 ns/iter (+/- 124)
test Md4::KB4              ... bench:       7,239 ns/iter (+/- 285)
test Md4::KB512            ... bench:     865,608 ns/iter (+/- 31,373)
test Md4::KB64             ... bench:     108,635 ns/iter (+/- 4,754)
test Md4::MB1              ... bench:   2,247,996 ns/iter (+/- 82,354)
test Md5::B0               ... bench:         359 ns/iter (+/- 13)
test Md5::B512             ... bench:       1,674 ns/iter (+/- 64)
test Md5::KB1              ... bench:       2,698 ns/iter (+/- 102)
test Md5::KB16             ... bench:      34,957 ns/iter (+/- 1,216)
test Md5::KB2              ... bench:       4,791 ns/iter (+/- 169)
test Md5::KB4              ... bench:       9,015 ns/iter (+/- 486)
test Md5::KB512            ... bench:   1,104,197 ns/iter (+/- 31,696)
test Md5::KB64             ... bench:     135,418 ns/iter (+/- 5,526)
test Md5::MB1              ... bench:   2,701,355 ns/iter (+/- 91,921)
test Ripemd128::B0         ... bench:         506 ns/iter (+/- 19)
test Ripemd128::B512       ... bench:       3,158 ns/iter (+/- 132)
test Ripemd128::KB1        ... bench:       5,606 ns/iter (+/- 216)
test Ripemd128::KB16       ... bench:      75,436 ns/iter (+/- 2,215)
test Ripemd128::KB2        ... bench:      10,100 ns/iter (+/- 285)
test Ripemd128::KB4        ... bench:      19,291 ns/iter (+/- 588)
test Ripemd128::KB512      ... bench:   2,365,541 ns/iter (+/- 60,851)
test Ripemd128::KB64       ... bench:     293,636 ns/iter (+/- 7,574)
test Ripemd128::MB1        ... bench:   5,260,685 ns/iter (+/- 114,847)
test Ripemd160::B0         ... bench:         729 ns/iter (+/- 29)
test Ripemd160::B512       ... bench:       4,758 ns/iter (+/- 224)
test Ripemd160::KB1        ... bench:       8,644 ns/iter (+/- 219)
test Ripemd160::KB16       ... bench:     118,310 ns/iter (+/- 2,795)
test Ripemd160::KB2        ... bench:      15,775 ns/iter (+/- 757)
test Ripemd160::KB4        ... bench:      30,732 ns/iter (+/- 933)
test Ripemd160::KB512      ... bench:   3,786,101 ns/iter (+/- 94,529)
test Ripemd160::KB64       ... bench:     482,467 ns/iter (+/- 16,249)
test Ripemd160::MB1        ... bench:   8,097,772 ns/iter (+/- 189,202)
test Ripemd256::B0         ... bench:         661 ns/iter (+/- 27)
test Ripemd256::B512       ... bench:       3,910 ns/iter (+/- 85)
test Ripemd256::KB1        ... bench:       6,752 ns/iter (+/- 112)
test Ripemd256::KB16       ... bench:      90,726 ns/iter (+/- 2,951)
test Ripemd256::KB2        ... bench:      12,221 ns/iter (+/- 376)
test Ripemd256::KB4        ... bench:      23,483 ns/iter (+/- 971)
test Ripemd256::KB512      ... bench:   2,884,738 ns/iter (+/- 65,146)
test Ripemd256::KB64       ... bench:     368,806 ns/iter (+/- 16,101)
test Ripemd256::MB1        ... bench:   6,331,970 ns/iter (+/- 227,431)
test Ripemd320::B0         ... bench:         885 ns/iter (+/- 29)
test Ripemd320::B512       ... bench:       5,530 ns/iter (+/- 289)
test Ripemd320::KB1        ... bench:      10,090 ns/iter (+/- 323)
test Ripemd320::KB16       ... bench:     138,023 ns/iter (+/- 5,537)
test Ripemd320::KB2        ... bench:      18,815 ns/iter (+/- 1,170)
test Ripemd320::KB4        ... bench:      35,594 ns/iter (+/- 1,095)
test Ripemd320::KB512      ... bench:   4,334,335 ns/iter (+/- 111,297)
test Ripemd320::KB64       ... bench:     550,295 ns/iter (+/- 29,826)
test Ripemd320::MB1        ... bench:   9,262,552 ns/iter (+/- 267,578)
test Sha0::B0              ... bench:         458 ns/iter (+/- 15)
test Sha0::B512            ... bench:       2,415 ns/iter (+/- 61)
test Sha0::KB1             ... bench:       3,931 ns/iter (+/- 131)
test Sha0::KB16            ... bench:      48,342 ns/iter (+/- 1,561)
test Sha0::KB2             ... bench:       7,079 ns/iter (+/- 391)
test Sha0::KB4             ... bench:      12,828 ns/iter (+/- 427)
test Sha0::KB512           ... bench:   1,529,320 ns/iter (+/- 74,278)
test Sha0::KB64            ... bench:     196,866 ns/iter (+/- 7,572)
test Sha0::MB1             ... bench:   3,576,476 ns/iter (+/- 109,205)
test Sha1::B0              ... bench:         452 ns/iter (+/- 17)
test Sha1::B512            ... bench:       2,507 ns/iter (+/- 111)
test Sha1::KB1             ... bench:       4,074 ns/iter (+/- 173)
test Sha1::KB16            ... bench:      51,317 ns/iter (+/- 2,965)
test Sha1::KB2             ... bench:       7,344 ns/iter (+/- 242)
test Sha1::KB4             ... bench:      13,370 ns/iter (+/- 463)
test Sha1::KB512           ... bench:   1,587,515 ns/iter (+/- 33,468)
test Sha1::KB64            ... bench:     203,421 ns/iter (+/- 10,891)
test Sha1::MB1             ... bench:   3,718,260 ns/iter (+/- 88,073)
test Sha224::B0            ... bench:         605 ns/iter (+/- 31)
test Sha224::B512          ... bench:       3,461 ns/iter (+/- 125)
test Sha224::KB1           ... bench:       5,667 ns/iter (+/- 172)
test Sha224::KB16          ... bench:      76,070 ns/iter (+/- 3,459)
test Sha224::KB2           ... bench:      10,709 ns/iter (+/- 414)
test Sha224::KB4           ... bench:      19,739 ns/iter (+/- 739)
test Sha224::KB512         ... bench:   2,418,414 ns/iter (+/- 87,564)
test Sha224::KB64          ... bench:     309,853 ns/iter (+/- 20,754)
test Sha224::MB1           ... bench:   5,359,874 ns/iter (+/- 158,081)
test Sha256::B0            ... bench:         648 ns/iter (+/- 41)
test Sha256::B512          ... bench:       3,342 ns/iter (+/- 100)
test Sha256::KB1           ... bench:       5,983 ns/iter (+/- 181)
test Sha256::KB16          ... bench:      75,823 ns/iter (+/- 2,795)
test Sha256::KB2           ... bench:      10,377 ns/iter (+/- 416)
test Sha256::KB4           ... bench:      19,725 ns/iter (+/- 475)
test Sha256::KB512         ... bench:   2,409,289 ns/iter (+/- 48,335)
test Sha256::KB64          ... bench:     309,090 ns/iter (+/- 12,546)
test Sha256::MB1           ... bench:   5,435,395 ns/iter (+/- 230,048)
test Sha384::B0            ... bench:         901 ns/iter (+/- 44)
test Sha384::B512          ... bench:       2,673 ns/iter (+/- 76)
test Sha384::KB1           ... bench:       4,248 ns/iter (+/- 196)
test Sha384::KB16          ... bench:      51,783 ns/iter (+/- 3,656)
test Sha384::KB2           ... bench:       7,541 ns/iter (+/- 278)
test Sha384::KB4           ... bench:      13,748 ns/iter (+/- 598)
test Sha384::KB512         ... bench:   1,613,553 ns/iter (+/- 45,416)
test Sha384::KB64          ... bench:     203,605 ns/iter (+/- 7,281)
test Sha384::MB1           ... bench:   3,754,642 ns/iter (+/- 131,012)
test Sha512::B0            ... bench:         960 ns/iter (+/- 79)
test Sha512::B512          ... bench:       2,768 ns/iter (+/- 117)
test Sha512::KB1           ... bench:       4,365 ns/iter (+/- 129)
test Sha512::KB16          ... bench:      51,472 ns/iter (+/- 1,964)
test Sha512::KB2           ... bench:       7,417 ns/iter (+/- 185)
test Sha512::KB4           ... bench:      13,859 ns/iter (+/- 893)
test Sha512::KB512         ... bench:   1,605,776 ns/iter (+/- 32,380)
test Sha512::KB64          ... bench:     208,209 ns/iter (+/- 7,835)
test Sha512::MB1           ... bench:   3,762,844 ns/iter (+/- 128,537)
test Sha512Trunc224::B0    ... bench:         797 ns/iter (+/- 23)
test Sha512Trunc224::B512  ... bench:       2,537 ns/iter (+/- 127)
test Sha512Trunc224::KB1   ... bench:       4,115 ns/iter (+/- 270)
test Sha512Trunc224::KB16  ... bench:      51,948 ns/iter (+/- 2,196)
test Sha512Trunc224::KB2   ... bench:       7,537 ns/iter (+/- 444)
test Sha512Trunc224::KB4   ... bench:      13,649 ns/iter (+/- 1,110)
test Sha512Trunc224::KB512 ... bench:   1,610,892 ns/iter (+/- 46,941)
test Sha512Trunc224::KB64  ... bench:     203,527 ns/iter (+/- 6,356)
test Sha512Trunc224::MB1   ... bench:   3,745,131 ns/iter (+/- 86,707)
test Sha512Trunc256::B0    ... bench:         913 ns/iter (+/- 38)
test Sha512Trunc256::B512  ... bench:       2,712 ns/iter (+/- 102)
test Sha512Trunc256::KB1   ... bench:       4,107 ns/iter (+/- 251)
test Sha512Trunc256::KB16  ... bench:      51,254 ns/iter (+/- 3,333)
test Sha512Trunc256::KB2   ... bench:       7,547 ns/iter (+/- 228)
test Sha512Trunc256::KB4   ... bench:      13,721 ns/iter (+/- 530)
test Sha512Trunc256::KB512 ... bench:   1,610,615 ns/iter (+/- 40,984)
test Sha512Trunc256::KB64  ... bench:     205,138 ns/iter (+/- 10,216)
test Sha512Trunc256::MB1   ... bench:   3,777,564 ns/iter (+/- 132,223)

after

test Md2::B0               ... bench:       2,774 ns/iter (+/- 123)
test Md2::B512             ... bench:      47,558 ns/iter (+/- 174)
test Md2::KB1              ... bench:      92,541 ns/iter (+/- 2,406)
test Md2::KB16             ... bench:   1,424,698 ns/iter (+/- 30,673)
test Md2::KB2              ... bench:     179,058 ns/iter (+/- 7,451)
test Md2::KB4              ... bench:     357,313 ns/iter (+/- 20,401)
test Md2::KB512            ... bench:  45,346,729 ns/iter (+/- 738,835)
test Md2::KB64             ... bench:   5,661,714 ns/iter (+/- 117,424)
test Md2::MB1              ... bench:  90,679,424 ns/iter (+/- 1,039,302)
test Md4::B0               ... bench:         166 ns/iter (+/- 7)
test Md4::B512             ... bench:         721 ns/iter (+/- 23)
test Md4::KB1              ... bench:       1,322 ns/iter (+/- 30)
test Md4::KB16             ... bench:      18,171 ns/iter (+/- 1,550)
test Md4::KB2              ... bench:       2,438 ns/iter (+/- 93)
test Md4::KB4              ... bench:       4,630 ns/iter (+/- 135)
test Md4::KB512            ... bench:     567,422 ns/iter (+/- 26,529)
test Md4::KB64             ... bench:      70,786 ns/iter (+/- 3,073)
test Md4::MB1              ... bench:   1,135,563 ns/iter (+/- 34,854)
test Md5::B0               ... bench:         196 ns/iter (+/- 1)
test Md5::B512             ... bench:         966 ns/iter (+/- 71)
test Md5::KB1              ... bench:       1,804 ns/iter (+/- 70)
test Md5::KB16             ... bench:      25,002 ns/iter (+/- 999)
test Md5::KB2              ... bench:       3,301 ns/iter (+/- 90)
test Md5::KB4              ... bench:       6,354 ns/iter (+/- 269)
test Md5::KB512            ... bench:     780,372 ns/iter (+/- 30,552)
test Md5::KB64             ... bench:      97,543 ns/iter (+/- 2,190)
test Md5::MB1              ... bench:   1,586,582 ns/iter (+/- 83,608)
test Ripemd128::B0         ... bench:         339 ns/iter (+/- 26)
test Ripemd128::B512       ... bench:       2,333 ns/iter (+/- 93)
test Ripemd128::KB1        ... bench:       4,279 ns/iter (+/- 123)
test Ripemd128::KB16       ... bench:      62,366 ns/iter (+/- 2,540)
test Ripemd128::KB2        ... bench:       8,145 ns/iter (+/- 278)
test Ripemd128::KB4        ... bench:      15,879 ns/iter (+/- 735)
test Ripemd128::KB512      ... bench:   1,979,599 ns/iter (+/- 86,193)
test Ripemd128::KB64       ... bench:     248,744 ns/iter (+/- 8,199)
test Ripemd128::MB1        ... bench:   3,962,677 ns/iter (+/- 116,775)
test Ripemd160::B0         ... bench:         522 ns/iter (+/- 24)
test Ripemd160::B512       ... bench:       3,669 ns/iter (+/- 226)
test Ripemd160::KB1        ... bench:       6,713 ns/iter (+/- 157)
test Ripemd160::KB16       ... bench:      97,248 ns/iter (+/- 6,141)
test Ripemd160::KB2        ... bench:      12,716 ns/iter (+/- 481)
test Ripemd160::KB4        ... bench:      25,173 ns/iter (+/- 696)
test Ripemd160::KB512      ... bench:   3,086,538 ns/iter (+/- 75,664)
test Ripemd160::KB64       ... bench:     389,572 ns/iter (+/- 29,769)
test Ripemd160::MB1        ... bench:   6,202,184 ns/iter (+/- 177,020)
test Ripemd256::B0         ... bench:         474 ns/iter (+/- 23)
test Ripemd256::B512       ... bench:       2,945 ns/iter (+/- 136)
test Ripemd256::KB1        ... bench:       5,312 ns/iter (+/- 203)
test Ripemd256::KB16       ... bench:      75,117 ns/iter (+/- 3,324)
test Ripemd256::KB2        ... bench:       9,874 ns/iter (+/- 339)
test Ripemd256::KB4        ... bench:      19,117 ns/iter (+/- 1,163)
test Ripemd256::KB512      ... bench:   2,400,165 ns/iter (+/- 85,947)
test Ripemd256::KB64       ... bench:     303,779 ns/iter (+/- 19,802)
test Ripemd256::MB1        ... bench:   4,816,570 ns/iter (+/- 121,853)
test Ripemd320::B0         ... bench:         685 ns/iter (+/- 22)
test Ripemd320::B512       ... bench:       4,161 ns/iter (+/- 83)
test Ripemd320::KB1        ... bench:       7,645 ns/iter (+/- 314)
test Ripemd320::KB16       ... bench:     110,827 ns/iter (+/- 2,598)
test Ripemd320::KB2        ... bench:      14,411 ns/iter (+/- 659)
test Ripemd320::KB4        ... bench:      28,228 ns/iter (+/- 1,046)
test Ripemd320::KB512      ... bench:   3,530,631 ns/iter (+/- 77,491)
test Ripemd320::KB64       ... bench:     447,662 ns/iter (+/- 24,758)
test Ripemd320::MB1        ... bench:   7,095,309 ns/iter (+/- 196,941)
test Sha0::B0              ... bench:         292 ns/iter (+/- 17)
test Sha0::B512            ... bench:       1,609 ns/iter (+/- 69)
test Sha0::KB1             ... bench:       2,835 ns/iter (+/- 80)
test Sha0::KB16            ... bench:      39,674 ns/iter (+/- 2,048)
test Sha0::KB2             ... bench:       5,317 ns/iter (+/- 152)
test Sha0::KB4             ... bench:      10,124 ns/iter (+/- 548)
test Sha0::KB512           ... bench:   1,254,684 ns/iter (+/- 37,736)
test Sha0::KB64            ... bench:     157,383 ns/iter (+/- 5,747)
test Sha0::MB1             ... bench:   2,520,607 ns/iter (+/- 98,632)
test Sha1::B0              ... bench:         330 ns/iter (+/- 23)
test Sha1::B512            ... bench:       1,729 ns/iter (+/- 50)
test Sha1::KB1             ... bench:       3,053 ns/iter (+/- 131)
test Sha1::KB16            ... bench:      42,141 ns/iter (+/- 1,792)
test Sha1::KB2             ... bench:       5,646 ns/iter (+/- 281)
test Sha1::KB4             ... bench:      10,834 ns/iter (+/- 594)
test Sha1::KB512           ... bench:   1,341,071 ns/iter (+/- 35,257)
test Sha1::KB64            ... bench:     167,056 ns/iter (+/- 10,650)
test Sha1::MB1             ... bench:   2,682,492 ns/iter (+/- 56,062)
test Sha224::B0            ... bench:         458 ns/iter (+/- 13)
test Sha224::B512          ... bench:       2,632 ns/iter (+/- 190)
test Sha224::KB1           ... bench:       4,729 ns/iter (+/- 138)
test Sha224::KB16          ... bench:      67,173 ns/iter (+/- 3,781)
test Sha224::KB2           ... bench:       8,868 ns/iter (+/- 198)
test Sha224::KB4           ... bench:      17,197 ns/iter (+/- 1,544)
test Sha224::KB512         ... bench:   2,140,858 ns/iter (+/- 71,477)
test Sha224::KB64          ... bench:     266,880 ns/iter (+/- 9,324)
test Sha224::MB1           ... bench:   4,281,111 ns/iter (+/- 110,050)
test Sha256::B0            ... bench:         450 ns/iter (+/- 14)
test Sha256::B512          ... bench:       2,611 ns/iter (+/- 103)
test Sha256::KB1           ... bench:       4,783 ns/iter (+/- 162)
test Sha256::KB16          ... bench:      66,946 ns/iter (+/- 2,589)
test Sha256::KB2           ... bench:       8,866 ns/iter (+/- 477)
test Sha256::KB4           ... bench:      17,328 ns/iter (+/- 597)
test Sha256::KB512         ... bench:   2,140,442 ns/iter (+/- 54,634)
test Sha256::KB64          ... bench:     269,995 ns/iter (+/- 15,766)
test Sha256::MB1           ... bench:   4,301,261 ns/iter (+/- 103,133)
test Sha384::B0            ... bench:         571 ns/iter (+/- 26)
test Sha384::B512          ... bench:       1,950 ns/iter (+/- 37)
test Sha384::KB1           ... bench:       3,301 ns/iter (+/- 114)
test Sha384::KB16          ... bench:      44,621 ns/iter (+/- 2,519)
test Sha384::KB2           ... bench:       6,033 ns/iter (+/- 292)
test Sha384::KB4           ... bench:      11,373 ns/iter (+/- 349)
test Sha384::KB512         ... bench:   1,390,245 ns/iter (+/- 43,597)
test Sha384::KB64          ... bench:     173,209 ns/iter (+/- 7,281)
test Sha384::MB1           ... bench:   2,779,280 ns/iter (+/- 68,040)
test Sha512::B0            ... bench:         601 ns/iter (+/- 23)
test Sha512::B512          ... bench:       2,185 ns/iter (+/- 99)
test Sha512::KB1           ... bench:       3,331 ns/iter (+/- 131)
test Sha512::KB16          ... bench:      43,715 ns/iter (+/- 1,123)
test Sha512::KB2           ... bench:       6,026 ns/iter (+/- 328)
test Sha512::KB4           ... bench:      11,596 ns/iter (+/- 739)
test Sha512::KB512         ... bench:   1,413,869 ns/iter (+/- 34,007)
test Sha512::KB64          ... bench:     175,924 ns/iter (+/- 9,365)
test Sha512::MB1           ... bench:   2,789,213 ns/iter (+/- 57,169)
test Sha512Trunc224::B0    ... bench:         472 ns/iter (+/- 24)
test Sha512Trunc224::B512  ... bench:       1,862 ns/iter (+/- 50)
test Sha512Trunc224::KB1   ... bench:       3,211 ns/iter (+/- 57)
test Sha512Trunc224::KB16  ... bench:      43,665 ns/iter (+/- 1,338)
test Sha512Trunc224::KB2   ... bench:       5,966 ns/iter (+/- 351)
test Sha512Trunc224::KB4   ... bench:      11,534 ns/iter (+/- 209)
test Sha512Trunc224::KB512 ... bench:   1,406,118 ns/iter (+/- 75,939)
test Sha512Trunc224::KB64  ... bench:     176,651 ns/iter (+/- 5,618)
test Sha512Trunc224::MB1   ... bench:   2,789,474 ns/iter (+/- 59,151)
test Sha512Trunc256::B0    ... bench:         514 ns/iter (+/- 19)
test Sha512Trunc256::B512  ... bench:       1,886 ns/iter (+/- 108)
test Sha512Trunc256::KB1   ... bench:       3,287 ns/iter (+/- 110)
test Sha512Trunc256::KB16  ... bench:      43,958 ns/iter (+/- 1,385)
test Sha512Trunc256::KB2   ... bench:       5,955 ns/iter (+/- 274)
test Sha512Trunc256::KB4   ... bench:      11,327 ns/iter (+/- 361)
test Sha512Trunc256::KB512 ... bench:   1,402,502 ns/iter (+/- 57,460)
test Sha512Trunc256::KB64  ... bench:     175,749 ns/iter (+/- 5,378)
test Sha512Trunc256::MB1   ... bench:   2,788,547 ns/iter (+/- 64,270)

Merge request reports