@ 2017-12-09T10:39:06Z <?php
function ordutf8_step1(string $char) : int
{
$code = ord(substr($char, 0, 1));
if ($code >= 128) {
if ($code < 224)
$bytesnumber = 2;
else if ($code < 240)
$bytesnumber = 3;
else if ($code < 248)
$bytesnumber = 4;
$codetemp = $code - 192 - ($bytesnumber > 2 ? 32 : 0) - ($bytesnumber > 3 ? 16 : 0);
$offset = 0;
for ($i = 2; $i <= $bytesnumber; $i++) {
$offset ++;
$code2 = ord(substr($char, $offset, 1)) - 128;
$codetemp = $codetemp * 64 + $code2;
}
$code = $codetemp;
}
return $code;
}
function ordutf8_step2(string $char) : int
{
$code = ord(substr($char, 0, 1));
if ($code >= 128) {
$count = 0;
if ($code < 224) {
$bytesnumber = 2;
} else if ($code < 240) {
$bytesnumber = 3;
$count = 32;
} else if ($code < 248) {
$bytesnumber = 4;
$count = 48;
}
$codetemp = $code - 192 - $count;
$offset = 0;
for ($i = 2; $i <= $bytesnumber; $i++) {
$offset ++;
$code2 = ord(substr($char, $offset, 1)) - 128;
$codetemp = $codetemp * 64 + $code2;
}
$code = $codetemp;
}
return $code;
}
function ordutf8_step3(string $char) : int
{
$code = ord(substr($char, 0, 1));
if ($code >= 128) {
$count = 0;
if ($code < 224) {
$bytes = 2;
} else if ($code < 240) {
$bytes = 3;
$count = 32;
} else if ($code < 248) {
$bytes = 4;
$count = 48;
}
$temp = $code - 192 - $count;
for ($i = 1; $i < $bytes; $i++) {
$code = $temp = $temp * 64 + ord(substr($char, $i, 1)) - 128;
}
}
return $code;
}
function ordutf8_step4(string $char) : int
{
$code = ord(substr($char, 0, 1));
if ($code > 127) {
$bytes = 2;
$count = 0;
if ($code > 223){
$bytes = 3;
$count = 32;
}
if ($code > 239){
$bytes = 4;
$count = 48;
}
$temp = $code - 192 - $count;
for ($i = 1; $i < $bytes; $i++) {
$code = $temp = $temp * 64 + ord(substr($char, $i, 1)) - 128;
}
}
return $code;
}
function ordutf8_step5(string $char) : int
{
$code = ord(substr($char, 0, 1));
if ($code > 239){
return ((($code - 240) * 64 + ord(substr($char, 1, 1)) - 128) *
64 + ord(substr($char, 2, 1)) - 128) *
64 + ord(substr($char, 3, 1)) - 128;
}
if ($code > 223){
return (($code - 224) * 64 + ord(substr($char, 1, 1)) - 128)
* 64 + ord(substr($char, 2, 1)) - 128;
}
if ($code > 127) {
return ($code - 192) * 64 + ord(substr($char, 1, 1)) - 128;
}
return $code;
}
$cicles = 100000;
$char = '⌚';
$time = -microtime(true);
for($i = 0; $i < $cicles; $i++) {
ordutf8_step1($char);
}
$time += microtime(true);
echo $time;
echo "\n";
$time = -microtime(true);
for($i = 0; $i < $cicles; $i++) {
ordutf8_step2($char);
}
$time += microtime(true);
echo $time;
echo "\n";
$time = -microtime(true);
for($i = 0; $i < $cicles; $i++) {
ordutf8_step3($char);
}
$time += microtime(true);
echo $time;
echo "\n";
$time = -microtime(true);
for($i = 0; $i < $cicles; $i++) {
ordutf8_step4($char);
}
$time += microtime(true);
echo $time;
echo "\n";
$time = -microtime(true);
for($i = 0; $i < $cicles; $i++) {
ordutf8_step5($char);
}
$time += microtime(true);
echo $time;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 7.3.1 0.013 0.295 16.21 7.3.0 0.014 0.265 16.39 7.2.13 0.010 0.254 16.17 7.2.12 0.010 0.248 16.38 7.2.11 0.017 0.248 16.95 7.2.10 0.010 0.292 16.73 7.2.9 0.012 0.283 16.41 7.2.8 0.019 0.274 16.56 7.2.7 0.007 0.284 16.64 7.2.6 0.007 0.281 16.05 7.2.5 0.013 0.272 16.66 7.2.4 0.007 0.274 16.73 7.2.3 0.007 0.263 16.19 7.2.2 0.007 0.280 16.41 7.2.1 0.007 0.271 16.79 7.2.0 0.003 0.203 18.34 7.1.25 0.015 0.452 15.63 7.1.12 0.003 0.176 18.69 7.1.11 0.003 0.191 17.92 7.1.10 0.003 0.170 18.16 7.1.9 0.003 0.189 18.04 7.1.8 0.000 0.180 18.12 7.1.7 0.000 0.177 17.15 7.1.6 0.017 0.171 35.15 7.1.5 0.023 0.197 34.93 7.1.4 0.013 0.164 34.44 7.1.3 0.010 0.179 34.47 7.1.2 0.010 0.164 34.40 7.1.1 0.010 0.150 16.44 7.1.0 0.006 0.150 16.62
preferences:dark mode live preview
29.95 ms | 401 KiB | 5 Q