3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * strrev function implementation taken from ext/standard/string.c PHP-5-5 branch * http://lxr.php.net/xref/PHP_5_5/ext/standard/string.c#3165 * * // {{{ proto string strrev(string str) * // Reverse a string * PHP_FUNCTION(strrev) * { * char *str; * char *e, *n, *p; * int str_len; * * if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { * return; * } * * n = emalloc(str_len+1); * p = n; * * e = str + str_len; * * while (--e>=str) { * *p++ = *e; * } * * *p = '\0'; * * RETVAL_STRINGL(n, str_len, 0); * } * // }}} */ // PHP Implementation function userland_strrev($string) { if (!is_string($string)) { return false; } $new_string = ""; $len = strlen($string); while (--$len > -1) { $new_string .= $string[$len]; } return $new_string; } // Tests $string = "Hello PHP!"; $c = 10000; // Without callable string resolution $results = array(); for ($i = 0; $i < $c; $i++) { $t = microtime(true); strrev($string); $results[$test][] = microtime(true) - $t; } array_shift($results[$test]); array_pop($results[$test]); $avg = array_sum($results[$test]) / count($results[$test]); printf("Average cost for function strrev: %.9f s\n", $avg); $results = array(); for ($i = 0; $i < $c; $i++) { $t = microtime(true); userland_strrev($string); $results[$test][] = microtime(true) - $t; } array_shift($results[$test]); array_pop($results[$test]); $avg = array_sum($results[$test]) / count($results[$test]); printf("Average cost for function userland_strrev: %.9f s\n", $avg);

preferences:
29.21 ms | 402 KiB | 5 Q