php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #73277 crc32() not using CPU capabilities
Submitted: 2016-10-09 16:45 UTC Modified: 2021-03-03 13:37 UTC
From: spam2 at rhsoft dot net Assigned:
Status: Open Package: Performance problem
PHP Version: 7.0.11 OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: spam2 at rhsoft dot net
New email:
PHP Version: OS:

 

 [2016-10-09 16:45 UTC] spam2 at rhsoft dot net
Description:
------------
for short messages crc32 seems to be the fastest way but for long messages like a whole page content for a ETAG-HTTP-Header it's the slowest

md5:   0.48954606056213
sha1:  0.57872104644775
crc32: 0.64182901382446

that should not be the case on modern Intel CPUs like SnadyBrdige or newer which support a accelerated instruction



Test script:
---------------
$test_content = file_get_contents('global.inc.php', true);

echo '<strong>md5: </strong>' . md5($test_content) . MY_LE;
$profiler->reset();
for($x=1;$x<5000;$x++)
{
 $rw = md5($test_content);
}
echo $profiler->get() . '<br /><br />' .  MY_LE;

echo '<strong>sha1: </strong>' . sha1($test_content) . MY_LE;
$profiler->reset();
for($x=1;$x<5000;$x++)
{
 $rw = sha1($test_content);
}
echo $profiler->get() . '<br /><br />' .  MY_LE;

echo '<strong>crc32: </strong>' . abs(crc32($test_content)) . MY_LE;
$profiler->reset();
for($x=1;$x<5000;$x++)
{
 $rw = crc32($test_content);
}
echo $profiler->get() . '<br /><br />' .  MY_LE;



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-03-03 13:07 UTC] cmb@php.net
-Status: Open +Status: Feedback -Assigned To: +Assigned To: cmb
 [2021-03-03 13:07 UTC] cmb@php.net
The crc32 implementation has been improved since PHP 7.0.11.  Is
it good for you now?
 [2021-03-03 13:15 UTC] rtrtrtrtrt at dfdfdfdf dot dfd
md4:         0.18111
md5:         0.28866
sha1:        0.40015
crc32:       0.47416

still the slowest
 [2021-03-03 13:37 UTC] cmb@php.net
-Status: Feedback +Status: Open -Assigned To: cmb +Assigned To:
 [2021-03-03 13:37 UTC] cmb@php.net
Thanks for checking!  I presume this has been measures with PHP 8.0?
 [2021-03-03 13:44 UTC] rtrtrtrtrt at dfdfdfdf dot dfd
7.4.15-sandybridge-fc33

i gave up PHP8 a while ago since it don't build with PGO here (segfault in mod_php as soon as it's loaded) and the nonsense of deprecate zip-functions without 1:1 replacement as well as https://bugs.php.net/bug.php?id=79350 don't make it easier either in an environment treating notices/warnings as fatal errors
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 14:01:32 2024 UTC