The first program below illustrates the overhead of array copying and
zeroing:

  int fn1()
  {
    array arg = ({ "a", "b", "c" });
    return sizeof(arg);
  }
  
  int fn2()
  {
    array arg = allocate(4711);
    return sizeof(arg);
  }
  
  void main()
  {
    int dummy;
    int t0 = gethrvtime();
    for (int i = 0; i < 100000; i++)
      dummy += fn1();
    int t1 = gethrvtime();
    for (int i = 0; i < 100000; i++)
      dummy += fn2();
    int t2 = gethrvtime();
    werror("fn1: %d ms\n", (t1 - t0) / 1000);
    werror("fn2: %d ms\n", (t2 - t1) / 1000);
  }

Sample test run (I repeated many times and it was +/- 2 msec):

  BEFORE                       AFTER
  ---------------------        ---------------------
  fn1: 159 ms                  fn1: 36 ms                -77%
  fn2: 1194 ms                 fn2: 777 ms               -34%

Next, a large XSL transform which exercises a lot of complex data
structures (again repeatable across several runs):

  BEFORE                       AFTER
  ---------------------        ---------------------
  Parse XML:      82 ms        Parse XML:      80 ms
  Parse XSL:       1 ms        Parse XSL:       1 ms
  Transform:     289 ms        Transform:     246 ms     -15%
      Total:     373 ms            Total:     328 ms

Another heavy XSL transform (less data, more complex rules):

  BEFORE                       AFTER
  ---------------------        ---------------------
  Parse XML:      17 ms        Parse XML:      17 ms
  Parse XSL:       4 ms        Parse XSL:       4 ms
  Transform:     194 ms        Transform:     176 ms     -9%
      Total:     217 ms            Total:     198 ms

All compiled with gcc 4.2.1 and run on a 2 GHz quad-code x86_64 Xeon
with 1.33 GHz system bus and 667 MHz DDR2 RAM.
  • Ideas for better perf... Jonas Walld�n @ Pike developers forum
    • Ideas for better... Per Hedbor () @ Pike (-) developers forum
    • Ideas for better... Jonas Walld�n @ Pike developers forum
      • Re: Ideas fo... Peter Bortas
        • Re: Idea... Jonas Walld�n @ Pike developers forum
          • Re: ... Peter Bortas @ Pike developers forum
            • ... Jonas Walld�n @ Pike developers forum
              • ... Peter Bortas @ Pike developers forum
                • ... Martin Bähr
                • ... Peter Bortas @ Pike developers forum
                • ... Tor Edvardsson @ Pike developers forum
                • ... Tor Edvardsson @ Pike developers forum
                • ... Jonas Walld�n @ Pike developers forum
                • ... Tor Edvardsson @ Pike developers forum
                • ... Martin Stjernholm, Roxen IS @ Pike developers forum

Reply via email to