Как измерить относительную стоимость исполнения различных методов хеширования в PHP?

Я хотел бы знать, как долго каждый алгоритм хеширования берет на себя определенную систему, учитывая разные длины набора данных.

Solutions Collecting From Web of "Как измерить относительную стоимость исполнения различных методов хеширования в PHP?"

На странице PHP.net для hash есть пример кода в комментариях, который демонстрирует, как вы можете профилировать различные функции хеширования PHP.

Здесь записано время одного человека , а также примерный пример того, как вы можете повторить тест.

Я взломал этот скрипт. Я рекомендую играть со значением $ random_len. Различные значения приводят к некоторым интересным результатам.

 <?php $random_len = 100; /* bytes */ $time_begin = microtime(true); $table_html = ''; $algos = hash_algos(); $fh = @fopen('/dev/urandom', 'rb'); $random = fread( $fh, $random_len ); $time_rand = microtime(true) - $time_begin; foreach ($algos as $algo) { $begin = microtime(true); $hash = hash($algo, $random); $end = microtime(true) - $begin; $table_html .= '<tr><td>' . $algo . '</td><td>' . $end . '</td><td>' . $hash . '</td></tr>'; } $time_end = microtime(true) - $time_begin; ?> <html> <style>body{font-family:monospace}td{white-space:nowrap}</style> <h1>PHP hashing algorithm execution time</h1> <p>Random data length: <?php echo $random_len; ?> bytes</p> <p>Random data elapsed time: <?php echo $time_rand; ?> seconds</p> <p>Total elapsed time: <?php echo $time_end; ?> seconds</p> <table border=1> <thead><tr><th>Algorithm</th><th>Execution Time (s)</th><th>Hashed Output</th></tr></thead> <tbody> <?php echo $table_html; ?> </tbody> </table> </html> 

См. http://us.php.net/manual/en/function.microtime.php . В основном, что-то вроде этого:

 $input = "blah"; $start = microtime(TRUE); for($i=0;$i<1000;$i++) sha1($input); $end = microtime(TRUE); print "Took ".($end-$start)." sec for 1000 sha1s."