note 92871 added to function.ctype-alnum
| From: | JosipRodin at osu1 dot php dot net | Date: | Wed, 12 Aug 2009 16:13:17 +0000 |
| Subject: | note 92871 added to function.ctype-alnum | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-159373@lists.php.net to get a copy of this message | ||
There doesn't actually seem to be a performance loss compared to using regexes. For example:
<?php
$sUser = 'my_username01';
$time_start1 = microtime(true);
$aValid = array('-', '_');
$ret1 = ctype_alnum(str_replace($aValid, '', $sUser));
$time_end1 = microtime(true);
$time1 = $time_end1 - $time_start1;
printf("Checked it with ctype_alnum and got %d in %.10f seconds\n", print_r($ret1, true),
$time1);
$time_start2 = microtime(true);
$ret2 = preg_match('/^[\w-]+$/', $sUser);
$time_end2 = microtime(true);
$time2 = $time_end2 - $time_start2;
printf("Checked it with preg_match and got %d in %.10f seconds\n", print_r($ret2, true),
$time2);
?>
This returns:
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000379086 seconds
Checked it with preg_match and got 1 in 0.0001120567 seconds
php ctype_alnum.php 0,01s user 0,01s system 84% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000400543 seconds
Checked it with preg_match and got 1 in 0.0001108646 seconds
php ctype_alnum.php 0,00s user 0,02s system 98% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000391006 seconds
Checked it with preg_match and got 1 in 0.0001142025 seconds
php ctype_alnum.php 0,02s user 0,01s system 98% cpu 0,024 total
ctype_alnum() seems to be consistently faster. I'm guessing that the preg engine initialization
induces a bit of overhead.
----
Server IP: 193.198.184.18
Probable Submitter: 161.53.12.209
----
Manual Page -- http://www.php.net/manual/en/function.ctype-alnum.php
Edit -- https://master.php.net/note/edit/92871
Del: integrated -- https://master.php.net/note/delete/92871/integrated
Del: useless -- https://master.php.net/note/delete/92871/useless
Del: bad code -- https://master.php.net/note/delete/92871/bad+code
Del: spam -- https://master.php.net/note/delete/92871/spam
Del: non-english -- https://master.php.net/note/delete/92871/non-english
Del: in docs -- https://master.php.net/note/delete/92871/in+docs
Del: other reasons-- https://master.php.net/note/delete/92871
Reject -- https://master.php.net/note/reject/92871
Search -- https://master.php.net/manage/user-notes.php