How can I measure the relative performance cost of

2019-06-28 08:02发布

I'd like to know how long each hashing algorithm takes on a particular system given different dataset lengths.

标签: php testing hash
3条回答
倾城 Initia
2楼-- · 2019-06-28 08:12

The PHP.net page for hash has some sample code in the comments that demonstrates how you can profile the various PHP hashing functions.

Here is one person's recorded times, along with some sample code on how you can replicate the test.

查看更多
贼婆χ
3楼-- · 2019-06-28 08:13

I whipped up this script. I recommend playing with the $random_len value. Differing values produces some interesting results.

<?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>
查看更多
聊天终结者
4楼-- · 2019-06-28 08:35

See http://us.php.net/manual/en/function.microtime.php. Basically, something like this:

$input = "blah";
$start = microtime(TRUE);
for($i=0;$i<1000;$i++)
   sha1($input);
$end = microtime(TRUE);
print "Took ".($end-$start)." sec for 1000 sha1s."
查看更多
登录 后发表回答