[issue13405] Add DTrace probes

Jesús Cea Avión report at bugs.python.org
Sun Dec 11 23:53:50 CET 2011


Jesús Cea Avión <jcea at jcea.es> added the comment:

Same calculations for 64 bit binaries:

***** STOCK PYTHON:

-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.3.0a0 (default:70ba352f9586, Dec 11 2011, 23:38:26) [GCC 4.6.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 3.392 seconds.
* Round 2 done in 3.423 seconds.
* Round 3 done in 3.397 seconds.
* Round 4 done in 3.425 seconds.
* Round 5 done in 3.395 seconds.
* Round 6 done in 3.465 seconds.
* Round 7 done in 3.476 seconds.
* Round 8 done in 3.388 seconds.
* Round 9 done in 3.385 seconds.
* Round 10 done in 3.388 seconds.

-------------------------------------------------------------------------------
Benchmark: 2011-12-11 23:39:33
-------------------------------------------------------------------------------

    Rounds: 10
    Warp:   10
    Timer:  time.time

    Machine Details:
       Platform ID:    SunOS-5.10-i86pc-i386-64bit-ELF
       Processor:      i386
    
    Python:
       Implementation: CPython
       Executable:     /home/python/cpython/python
       Version:        3.3.0a0
       Compiler:       GCC 4.6.2
       Bits:           64bit
       Build:          Dec 11 2011 23:38:26 (#default:70ba352f9586)
       Unicode:        UCS4


Test                             minimum  average  operation  overhead
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:     58ms     61ms    0.12us    0.199ms
           BuiltinMethodLookup:     38ms     39ms    0.04us    0.233ms
                 CompareFloats:     44ms     51ms    0.04us    0.267ms
         CompareFloatsIntegers:    100ms    102ms    0.11us    0.199ms
               CompareIntegers:     68ms     78ms    0.04us    0.401ms
        CompareInternedStrings:     53ms     53ms    0.04us    1.015ms
                  CompareLongs:     38ms     45ms    0.04us    0.233ms
                CompareStrings:     45ms     46ms    0.05us    0.680ms
    ComplexPythonFunctionCalls:     57ms     58ms    0.29us    0.335ms
                 ConcatStrings:     52ms     53ms    0.11us    0.379ms
               CreateInstances:     88ms     89ms    0.80us    0.331ms
            CreateNewInstances:     66ms     68ms    0.80us    0.269ms
       CreateStringsWithConcat:     87ms     89ms    0.09us    0.672ms
                  DictCreation:     46ms     47ms    0.12us    0.279ms
             DictWithFloatKeys:     57ms     58ms    0.06us    0.503ms
           DictWithIntegerKeys:     47ms     48ms    0.04us    0.672ms
            DictWithStringKeys:     40ms     41ms    0.03us    0.672ms
                      ForLoops:     45ms     45ms    1.82us    0.031ms
                    IfThenElse:     54ms     55ms    0.04us    0.503ms
                   ListSlicing:     50ms     51ms    3.64us    0.042ms
                NestedForLoops:     65ms     67ms    0.04us    0.002ms
      NestedListComprehensions:     64ms     65ms    5.44us    0.066ms
          NormalClassAttribute:    129ms    130ms    0.11us    0.363ms
       NormalInstanceAttribute:     62ms     62ms    0.05us    0.365ms
           PythonFunctionCalls:     49ms     50ms    0.15us    0.203ms
             PythonMethodCalls:     69ms     69ms    0.31us    0.133ms
                     Recursion:     86ms     86ms    1.72us    0.334ms
                  SecondImport:     57ms     59ms    0.59us    0.131ms
           SecondPackageImport:     59ms     60ms    0.60us    0.131ms
         SecondSubmoduleImport:    103ms    104ms    1.04us    0.131ms
       SimpleComplexArithmetic:     45ms     45ms    0.05us    0.267ms
        SimpleDictManipulation:     84ms     84ms    0.07us    0.334ms
         SimpleFloatArithmetic:     46ms     47ms    0.04us    0.402ms
      SimpleIntFloatArithmetic:     57ms     58ms    0.04us    0.401ms
       SimpleIntegerArithmetic:     57ms     57ms    0.04us    0.401ms
      SimpleListComprehensions:     54ms     55ms    4.56us    0.066ms
        SimpleListManipulation:     42ms     43ms    0.04us    0.506ms
          SimpleLongArithmetic:     37ms     38ms    0.06us    0.199ms
                    SmallLists:     61ms     63ms    0.09us    0.266ms
                   SmallTuples:     63ms     65ms    0.12us    0.300ms
         SpecialClassAttribute:    184ms    187ms    0.16us    0.368ms
      SpecialInstanceAttribute:     62ms     63ms    0.05us    0.370ms
                StringMappings:    206ms    211ms    0.84us    0.293ms
              StringPredicates:     65ms     67ms    0.10us    1.328ms
                 StringSlicing:     74ms     75ms    0.13us    0.559ms
                     TryExcept:     36ms     36ms    0.02us    0.503ms
                    TryFinally:     45ms     45ms    0.28us    0.267ms
                TryRaiseExcept:     27ms     27ms    0.42us    0.267ms
                  TupleSlicing:     72ms     73ms    0.28us    0.030ms
                   WithFinally:     68ms     71ms    0.44us    0.267ms
               WithRaiseExcept:     73ms     76ms    0.94us    0.334ms
-------------------------------------------------------------------------------
Totals:                           3333ms   3413ms


********** DTRACE CALCULATING LINENUMBER IN EVERY FUNCTION CALL:

-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.3.0a0 (dtrace-issue13405:552edf5be75c, Dec 11 2011, 23:43:27) [GCC 4.6.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 3.898 seconds.
* Round 2 done in 3.849 seconds.
* Round 3 done in 3.857 seconds.
* Round 4 done in 3.887 seconds.
* Round 5 done in 3.833 seconds.
* Round 6 done in 3.837 seconds.
* Round 7 done in 3.842 seconds.
* Round 8 done in 3.853 seconds.
* Round 9 done in 3.870 seconds.
* Round 10 done in 3.840 seconds.

-------------------------------------------------------------------------------
Benchmark: 2011-12-11 23:44:53
-------------------------------------------------------------------------------

    Rounds: 10
    Warp:   10
    Timer:  time.time

    Machine Details:
       Platform ID:    SunOS-5.10-i86pc-i386-64bit-ELF
       Processor:      i386
    
    Python:
       Implementation: CPython
       Executable:     /home/python/cpython-jcea/python
       Version:        3.3.0a0
       Compiler:       GCC 4.6.2
       Bits:           64bit
       Build:          Dec 11 2011 23:43:27 (#dtrace-issue13405:552edf5be75c)
       Unicode:        UCS4


Test                             minimum  average  operation  overhead
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:    107ms    109ms    0.21us    0.205ms
           BuiltinMethodLookup:     39ms     40ms    0.04us    0.239ms
                 CompareFloats:     44ms     45ms    0.04us    0.274ms
         CompareFloatsIntegers:     83ms     84ms    0.09us    0.204ms
               CompareIntegers:     70ms     70ms    0.04us    0.413ms
        CompareInternedStrings:     56ms     57ms    0.04us    1.053ms
                  CompareLongs:     40ms     41ms    0.04us    0.239ms
                CompareStrings:     49ms     51ms    0.05us    0.700ms
    ComplexPythonFunctionCalls:     74ms     77ms    0.39us    0.344ms
                 ConcatStrings:     54ms     54ms    0.11us    0.388ms
               CreateInstances:     97ms     98ms    0.88us    0.324ms
            CreateNewInstances:     73ms     74ms    0.88us    0.275ms
       CreateStringsWithConcat:     89ms     90ms    0.09us    0.692ms
                  DictCreation:     47ms     47ms    0.12us    0.274ms
             DictWithFloatKeys:     59ms     60ms    0.07us    0.519ms
           DictWithIntegerKeys:     48ms     49ms    0.04us    0.693ms
            DictWithStringKeys:     44ms     45ms    0.04us    0.693ms
                      ForLoops:     44ms     45ms    1.78us    0.031ms
                    IfThenElse:     59ms     59ms    0.04us    0.519ms
                   ListSlicing:     50ms     50ms    3.61us    0.040ms
                NestedForLoops:     68ms     69ms    0.05us    0.002ms
      NestedListComprehensions:     69ms     70ms    5.87us    0.068ms
          NormalClassAttribute:    130ms    134ms    0.11us    0.371ms
       NormalInstanceAttribute:     64ms     65ms    0.05us    0.373ms
           PythonFunctionCalls:     80ms     81ms    0.25us    0.201ms
             PythonMethodCalls:    102ms    103ms    0.46us    0.136ms
                     Recursion:    112ms    114ms    2.29us    0.343ms
                  SecondImport:     54ms     56ms    0.56us    0.135ms
           SecondPackageImport:     54ms     56ms    0.56us    0.135ms
         SecondSubmoduleImport:     99ms    101ms    1.01us    0.135ms
       SimpleComplexArithmetic:     48ms     49ms    0.06us    0.274ms
        SimpleDictManipulation:    137ms    139ms    0.12us    0.344ms
         SimpleFloatArithmetic:     45ms     45ms    0.03us    0.413ms
      SimpleIntFloatArithmetic:     57ms     59ms    0.04us    0.413ms
       SimpleIntegerArithmetic:     60ms     61ms    0.05us    0.413ms
      SimpleListComprehensions:     57ms     58ms    4.82us    0.067ms
        SimpleListManipulation:     76ms     77ms    0.07us    0.449ms
          SimpleLongArithmetic:     40ms     41ms    0.06us    0.204ms
                    SmallLists:     81ms     82ms    0.12us    0.274ms
                   SmallTuples:     71ms     72ms    0.13us    0.309ms
         SpecialClassAttribute:    188ms    191ms    0.16us    0.377ms
      SpecialInstanceAttribute:     63ms     64ms    0.05us    0.378ms
                StringMappings:    210ms    211ms    0.84us    0.296ms
              StringPredicates:    114ms    115ms    0.16us    1.408ms
                 StringSlicing:     77ms     78ms    0.14us    0.578ms
                     TryExcept:     48ms     48ms    0.02us    0.518ms
                    TryFinally:     93ms     99ms    0.62us    0.274ms
                TryRaiseExcept:     30ms     30ms    0.47us    0.274ms
                  TupleSlicing:     72ms     75ms    0.28us    0.030ms
                   WithFinally:     81ms     82ms    0.51us    0.274ms
               WithRaiseExcept:     82ms     84ms    1.05us    0.343ms
-------------------------------------------------------------------------------
Totals:                           3793ms   3857ms


********* SPENDING SOME MEMORY FOR PERFORMANCE:

-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.3.0a0 (dtrace-issue13405:43d1a819a63d, Dec 11 2011, 23:47:52) [GCC 4.6.2]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait... done.

Running 10 round(s) of the suite at warp factor 10:

* Round 1 done in 3.529 seconds.
* Round 2 done in 3.579 seconds.
* Round 3 done in 3.526 seconds.
* Round 4 done in 3.517 seconds.
* Round 5 done in 3.538 seconds.
* Round 6 done in 3.547 seconds.
* Round 7 done in 3.526 seconds.
* Round 8 done in 3.518 seconds.
* Round 9 done in 3.512 seconds.
* Round 10 done in 3.550 seconds.

-------------------------------------------------------------------------------
Benchmark: 2011-12-11 23:49:03
-------------------------------------------------------------------------------

    Rounds: 10
    Warp:   10
    Timer:  time.time

    Machine Details:
       Platform ID:    SunOS-5.10-i86pc-i386-64bit-ELF
       Processor:      i386
    
    Python:
       Implementation: CPython
       Executable:     /home/python/cpython-jcea/python
       Version:        3.3.0a0
       Compiler:       GCC 4.6.2
       Bits:           64bit
       Build:          Dec 11 2011 23:47:52 (#dtrace-issue13405:43d1a819a63d)
       Unicode:        UCS4


Test                             minimum  average  operation  overhead
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:     57ms     61ms    0.12us    0.203ms
           BuiltinMethodLookup:     40ms     41ms    0.04us    0.237ms
                 CompareFloats:     45ms     46ms    0.04us    0.272ms
         CompareFloatsIntegers:     85ms     85ms    0.09us    0.203ms
               CompareIntegers:     69ms     69ms    0.04us    0.410ms
        CompareInternedStrings:     65ms     65ms    0.04us    1.035ms
                  CompareLongs:     40ms     40ms    0.04us    0.237ms
                CompareStrings:     47ms     50ms    0.05us    0.694ms
    ComplexPythonFunctionCalls:     61ms     62ms    0.31us    0.341ms
                 ConcatStrings:     56ms     57ms    0.11us    0.385ms
               CreateInstances:     97ms     99ms    0.88us    0.329ms
            CreateNewInstances:     72ms     73ms    0.87us    0.275ms
       CreateStringsWithConcat:     87ms     88ms    0.09us    0.686ms
                  DictCreation:     46ms     47ms    0.12us    0.272ms
             DictWithFloatKeys:     59ms     60ms    0.07us    0.513ms
           DictWithIntegerKeys:     49ms     50ms    0.04us    0.686ms
            DictWithStringKeys:     43ms     43ms    0.04us    0.686ms
                      ForLoops:     43ms     44ms    1.77us    0.031ms
                    IfThenElse:     60ms     61ms    0.05us    0.513ms
                   ListSlicing:     50ms     51ms    3.65us    0.040ms
                NestedForLoops:     64ms     65ms    0.04us    0.002ms
      NestedListComprehensions:     66ms     67ms    5.57us    0.067ms
          NormalClassAttribute:    132ms    133ms    0.11us    0.370ms
       NormalInstanceAttribute:     64ms     65ms    0.05us    0.373ms
           PythonFunctionCalls:     62ms     62ms    0.19us    0.203ms
             PythonMethodCalls:     80ms     82ms    0.37us    0.135ms
                     Recursion:    105ms    106ms    2.12us    0.341ms
                  SecondImport:     53ms     54ms    0.54us    0.134ms
           SecondPackageImport:     53ms     54ms    0.54us    0.134ms
         SecondSubmoduleImport:     94ms     95ms    0.95us    0.134ms
       SimpleComplexArithmetic:     48ms     48ms    0.05us    0.272ms
        SimpleDictManipulation:     92ms     93ms    0.08us    0.337ms
         SimpleFloatArithmetic:     46ms     46ms    0.04us    0.411ms
      SimpleIntFloatArithmetic:     58ms     58ms    0.04us    0.409ms
       SimpleIntegerArithmetic:     57ms     58ms    0.04us    0.409ms
      SimpleListComprehensions:     55ms     57ms    4.79us    0.067ms
        SimpleListManipulation:     45ms     46ms    0.04us    0.422ms
          SimpleLongArithmetic:     38ms     39ms    0.06us    0.203ms
                    SmallLists:     62ms     64ms    0.09us    0.272ms
                   SmallTuples:     66ms     67ms    0.12us    0.306ms
         SpecialClassAttribute:    187ms    191ms    0.16us    0.374ms
      SpecialInstanceAttribute:     64ms     65ms    0.05us    0.378ms
                StringMappings:    198ms    199ms    0.79us    0.295ms
              StringPredicates:     68ms     69ms    0.10us    1.380ms
                 StringSlicing:     75ms     76ms    0.14us    0.570ms
                     TryExcept:     46ms     46ms    0.02us    0.513ms
                    TryFinally:     54ms     54ms    0.34us    0.272ms
                TryRaiseExcept:     27ms     27ms    0.43us    0.272ms
                  TupleSlicing:     74ms     75ms    0.29us    0.031ms
                   WithFinally:     82ms     84ms    0.53us    0.272ms
               WithRaiseExcept:     91ms     93ms    1.17us    0.341ms
-------------------------------------------------------------------------------
Totals:                           3477ms   3534ms


Here the performance penalty is 13% for the version that calculates linenumbers in each function call, and 3.5% for the memory spending extra memory for performance. The extra performance hit is because, possibly, the extra C function call and C stack massaging. Something to think about.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue13405>
_______________________________________


More information about the Python-bugs-list mailing list