Skip to content

Instantly share code, notes, and snippets.

@xtrasmal
Created December 3, 2018 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xtrasmal/f747bbd6df1a0b581a9a69c0e2570166 to your computer and use it in GitHub Desktop.
Save xtrasmal/f747bbd6df1a0b581a9a69c0e2570166 to your computer and use it in GitHub Desktop.
php hash functions metrics results(see comment at: http://php.net/manual/en/function.hash.php)
<?php
echo "Building data...";
$data = "";
for($i = 0; $i < 1500; $i++)
$data .= sha1("H:k - $i - k:H");
echo "OK! (".strlen($data)." bytes)".PHP_EOL;
$res = [];
echo "Testing hashes.....".PHP_EOL;
foreach (hash_algos() as $algo) {
$time = microtime(1);
$hash = hash($algo, $data);
$time = (microtime(1) - $time) * 1000;
$length = strlen($hash);
$res["$time"][] = [
"algo" => "HEX-$algo",
"length" => "$length",
"time" => sprintf("%.8f", $time)
];
$time = microtime(1);
hash($algo, $data, 1);
$time = (microtime(1) - $time) * 1000;
$res["$time"][] = [
"algo" => "RAW-$algo",
"length" => "$length",
"time" => sprintf("%.8f", $time)
];
}
ksort($res);
$i = 0;
echo "Results:".PHP_EOL;
echo "Posit. Time in ms Type-Hash algo Hash length".PHP_EOL;
foreach($res as $sres){
foreach($sres as $result){
echo sprintf("%5d. %12s ms %-20s %-2d bytes", $i++, $result['time'], $result['algo'], $result['length']).PHP_EOL;
}
}
Building data...OK! (60000 bytes)
Testing hashes.....
Results:
Posit. Time in ms Type-Hash algo Hash length
0. 0.03910065 ms RAW-adler32 8 bytes
1. 0.04005432 ms HEX-adler32 8 bytes
2. 0.07081032 ms HEX-fnv132 8 bytes
3. 0.07081032 ms RAW-fnv1a32 8 bytes
4. 0.07200241 ms RAW-fnv132 8 bytes
5. 0.07200241 ms HEX-fnv1a32 8 bytes
6. 0.10085106 ms RAW-md4 32 bytes
7. 0.10299683 ms HEX-md4 32 bytes
8. 0.12111664 ms HEX-joaat 8 bytes
9. 0.12111664 ms RAW-joaat 8 bytes
10. 0.13899803 ms HEX-md5 32 bytes
11. 0.13899803 ms RAW-md5 32 bytes
12. 0.17905235 ms HEX-sha1 40 bytes
13. 0.21409988 ms RAW-tiger128,3 32 bytes
14. 0.21696091 ms RAW-sha1 40 bytes
15. 0.23317337 ms HEX-tiger160,3 40 bytes
16. 0.24890900 ms RAW-crc32b 8 bytes
17. 0.24986267 ms HEX-crc32b 8 bytes
18. 0.25296211 ms HEX-tiger128,3 32 bytes
19. 0.25296211 ms RAW-tiger160,3 40 bytes
20. 0.25296211 ms RAW-tiger192,3 48 bytes
21. 0.25391579 ms HEX-crc32 8 bytes
22. 0.25391579 ms RAW-crc32 8 bytes
23. 0.26512146 ms HEX-tiger192,3 48 bytes
24. 0.26702881 ms RAW-haval128,3 32 bytes
25. 0.26702881 ms HEX-haval192,3 48 bytes
26. 0.26702881 ms HEX-haval256,3 64 bytes
27. 0.26798248 ms RAW-haval160,3 40 bytes
28. 0.26798248 ms RAW-haval192,3 48 bytes
29. 0.26798248 ms HEX-haval224,3 56 bytes
30. 0.26798248 ms RAW-haval224,3 56 bytes
31. 0.26822090 ms RAW-haval256,3 64 bytes
32. 0.26893616 ms HEX-haval160,3 40 bytes
33. 0.26917458 ms HEX-haval128,3 32 bytes
34. 0.28586388 ms RAW-fnv164 16 bytes
35. 0.28896332 ms HEX-fnv1a64 16 bytes
36. 0.29397011 ms RAW-ripemd128 32 bytes
37. 0.29397011 ms HEX-fnv164 16 bytes
38. 0.30016899 ms RAW-ripemd256 64 bytes
39. 0.30612946 ms RAW-tiger160,4 40 bytes
40. 0.30684471 ms RAW-tiger192,4 48 bytes
41. 0.31495094 ms HEX-ripemd128 32 bytes
42. 0.31805038 ms HEX-tiger160,4 40 bytes
43. 0.32114983 ms HEX-tiger192,4 48 bytes
44. 0.32496452 ms HEX-ripemd256 64 bytes
45. 0.32615662 ms RAW-fnv1a64 16 bytes
46. 0.35285950 ms RAW-tiger128,4 32 bytes
47. 0.40698051 ms HEX-tiger128,4 32 bytes
48. 0.41508675 ms HEX-ripemd160 40 bytes
49. 0.43010712 ms RAW-ripemd160 40 bytes
50. 0.43797493 ms HEX-haval256,4 64 bytes
51. 0.44488907 ms RAW-ripemd320 80 bytes
52. 0.44798851 ms HEX-haval192,4 48 bytes
53. 0.45013428 ms HEX-haval160,4 40 bytes
54. 0.45108795 ms HEX-haval128,4 32 bytes
55. 0.45108795 ms RAW-haval128,4 32 bytes
56. 0.45108795 ms RAW-haval160,4 40 bytes
57. 0.45180321 ms RAW-haval192,4 48 bytes
58. 0.45204163 ms HEX-haval224,4 56 bytes
59. 0.45895576 ms RAW-sha256 64 bytes
60. 0.46491623 ms HEX-sha256 64 bytes
61. 0.46706200 ms HEX-ripemd320 80 bytes
62. 0.47206879 ms RAW-haval224,4 56 bytes
63. 0.47612190 ms RAW-sha224 56 bytes
64. 0.48995018 ms RAW-haval256,4 64 bytes
65. 0.54979324 ms HEX-haval256,5 64 bytes
66. 0.55098534 ms HEX-haval192,5 48 bytes
67. 0.55098534 ms RAW-haval192,5 48 bytes
68. 0.55098534 ms RAW-haval224,5 56 bytes
69. 0.55098534 ms RAW-haval256,5 64 bytes
70. 0.55217743 ms HEX-haval224,5 56 bytes
71. 0.55599213 ms HEX-sha224 56 bytes
72. 0.57506561 ms RAW-haval128,5 32 bytes
73. 0.63204765 ms RAW-haval160,5 40 bytes
74. 0.67496300 ms HEX-haval160,5 40 bytes
75. 0.71191788 ms HEX-haval128,5 32 bytes
76. 0.76794624 ms HEX-sha512 128 bytes
77. 0.78988075 ms RAW-sha512/256 64 bytes
78. 0.79011917 ms HEX-sha512/224 56 bytes
79. 0.79202652 ms RAW-sha384 96 bytes
80. 0.79202652 ms HEX-sha512/256 64 bytes
81. 0.79298019 ms HEX-sha384 96 bytes
82. 0.79321861 ms RAW-sha512/224 56 bytes
83. 0.80108643 ms RAW-sha512 128 bytes
84. 1.27696991 ms RAW-whirlpool 128 bytes
85. 1.31297112 ms HEX-whirlpool 128 bytes
86. 1.45196915 ms RAW-gost-crypto 64 bytes
87. 1.46794319 ms HEX-gost-crypto 64 bytes
88. 1.47008896 ms RAW-gost 64 bytes
89. 1.53398514 ms HEX-gost 64 bytes
90. 3.60107422 ms HEX-snefru256 64 bytes
91. 3.62896919 ms RAW-snefru 64 bytes
92. 3.65900993 ms RAW-snefru256 64 bytes
93. 3.71098518 ms HEX-snefru 64 bytes
94. 6.31499290 ms RAW-sha3-224 56 bytes
95. 6.44183159 ms HEX-sha3-224 56 bytes
96. 6.46901131 ms RAW-sha3-256 64 bytes
97. 6.48403168 ms HEX-sha3-256 64 bytes
98. 7.85994530 ms RAW-md2 32 bytes
99. 8.05807114 ms HEX-md2 32 bytes
100. 8.41379166 ms HEX-sha3-384 96 bytes
101. 8.57901573 ms RAW-sha3-384 96 bytes
102. 11.99913025 ms HEX-sha3-512 128 bytes
103. 12.29000092 ms RAW-sha3-512 128 bytes
@xtrasmal
Copy link
Author

xtrasmal commented Dec 3, 2018

it's an indication ofcourse.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment