And you're sure gettimeofday() is available always?
Hint: It isn't. :)

--Jani


On Thu, 2007-10-25 at 05:39 +0000, Dmitry Stogov wrote:
> dmitry                Thu Oct 25 05:39:24 2007 UTC
> 
>   Modified files:              
>     /php-src/sapi/cgi cgi_main.c 
>   Log:
>   Added CGI SAPI -T option, to measure execution time of script repeated 
> several times.
>   
>   
> http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.340&r2=1.341&diff_format=u
> Index: php-src/sapi/cgi/cgi_main.c
> diff -u php-src/sapi/cgi/cgi_main.c:1.340 php-src/sapi/cgi/cgi_main.c:1.341
> --- php-src/sapi/cgi/cgi_main.c:1.340 Mon Oct  1 12:32:39 2007
> +++ php-src/sapi/cgi/cgi_main.c       Thu Oct 25 05:39:24 2007
> @@ -21,7 +21,7 @@
>     +----------------------------------------------------------------------+
>  */
>  
> -/* $Id: cgi_main.c,v 1.340 2007/10/01 12:32:39 jani Exp $ */
> +/* $Id: cgi_main.c,v 1.341 2007/10/25 05:39:24 dmitry Exp $ */
>  
>  #include "php.h"
>  #include "php_globals.h"
> @@ -137,6 +137,7 @@
>       {'?', 0, "usage"},/* help alias (both '?' and 'usage') */
>       {'v', 0, "version"},
>       {'z', 1, "zend-extension"},
> +     {'T', 1, "timing"},
>       {'-', 0, NULL} /* end of args */
>  };
>  
> @@ -767,7 +768,8 @@
>                               "  -s               Display colour syntax 
> highlighted source.\n"
>                               "  -v               Version number\n"
>                               "  -w               Display source with 
> stripped comments and whitespace.\n"
> -                             "  -z <file>        Load Zend extension 
> <file>.\n",
> +                             "  -z <file>        Load Zend extension 
> <file>.\n"
> +                        "  -T <count>       Measure execution time of script 
> repeated <count> times.\n",
>                               prog, prog);
>  }
>  /* }}} */
> @@ -1266,6 +1268,9 @@
>       char *bindpath = NULL;
>       int fcgi_fd = 0;
>       fcgi_request request;
> +     int repeats = 1;
> +     int benchmark = 0;
> +     struct timeval start, end;
>  #ifndef PHP_WIN32
>       int status = 0;
>  #endif
> @@ -1543,6 +1548,11 @@
>       zend_first_try {
>               while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, 
> &php_optind, 1, 2)) != -1) {
>                       switch (c) {
> +                             case 'T':
> +                             benchmark = 1;
> +                                     repeats = atoi(php_optarg);
> +                                     gettimeofday(&start, NULL);
> +                                     break;
>                               case 'h':
>                               case '?':
>                                       fcgi_shutdown();
> @@ -1912,8 +1922,18 @@
>                               }
>                       }
>  
> -                     if (!fastcgi)
> +                     if (!fastcgi) {
> +                             if (benchmark) {
> +                                     repeats--;
> +                                     if (repeats > 0) {
> +                                             script_file = NULL;
> +                                             php_optind = orig_optind;
> +                                             php_optarg = orig_optarg;
> +                                             continue;
> +                                     }
> +                             }
>                               break;
> +                     }
>  
>                       /* only fastcgi will get here */
>                       requests++;
> @@ -1943,6 +1963,21 @@
>       } zend_end_try();
>  
>  out:
> +     if (benchmark) {
> +             int sec;
> +             int usec;
> +
> +             gettimeofday(&end, NULL);
> +             sec = (int)(end.tv_sec - start.tv_sec);
> +             if (end.tv_usec >= start.tv_usec) {
> +                     usec = (int)(end.tv_usec - start.tv_usec);
> +             } else {
> +                     sec -= 1;
> +                     usec = (int)(end.tv_usec + 1000000 - start.tv_usec);
> +             }
> +             fprintf(stderr, "\nElapsed time: %d.%06d sec\n", sec, usec);
> +     }
> +
>       SG(server_context) = NULL;
>       php_module_shutdown(TSRMLS_C);
>       sapi_shutdown();
> 
-- 
Patches/Donations: http://pecl.php.net/~jani/

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to