Как я могу измерить относительную стоимость производительности различных методов хеширования в PHP? - PullRequest
4 голосов
/ 30 ноября 2011

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

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011

Я взбил этот скрипт.Я рекомендую играть со значением $ 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>
2 голосов
/ 30 ноября 2011

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

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

0 голосов
/ 30 ноября 2011

См. 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."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...