I make some small test.
http://martin.m-core.net/misc/php/dehex.c - source code

cc dehex.c; for i in `seq 1 1000`; do ./a.out >> dehex.log; done
http://martin.m-core.net/misc/php/dehex.log - results

I ignore values greater than 4e9. And here is summary:
http://martin.m-core.net/misc/php/dehex.php

Source of PHP script: http://martin.m-core.net/misc/php/dehex.phps

So, m1 is very slow, but other ones are faster.

Martin Majlis

On 25/05/07, Martin Majlis <[EMAIL PROTECTED]> wrote:
Just small refactoring. Replacing self-made function with functions
from standard headers.

Index: JSON_parser.c
===================================================================
RCS file: /repository/php-src/ext/json/JSON_parser.c,v
retrieving revision 1.1.2.8
diff -u -u -r1.1.2.8 JSON_parser.c
--- JSON_parser.c       24 May 2007 22:37:59 -0000      1.1.2.8
+++ JSON_parser.c       24 May 2007 23:41:11 -0000
@@ -29,6 +29,8 @@

 #include "JSON_parser.h"
 #include <stdio.h>
+#include <math.h>
+#include <ctype.h>

 #define true  1
 #define false 0
@@ -259,18 +261,10 @@

 static int dehexchar(char c)
 {
-    if (c >= '0' && c <= '9')
-    {
-        return c - '0';
-    }
-    else if (c >= 'A' && c <= 'F')
-    {
-        return c - ('A' - 10);
-    }
-    else if (c >= 'a' && c <= 'f')
-    {
-        return c - ('a' - 10);
-    }
+    if (isxdigit(c))
+    {
+        return strtol(&c, NULL, 16);
+    }
     else
     {
         return -1;


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to