1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonインストール時の最適化

Posted at

Python-3.6.3 のインストールにおいて、--enable-optimizations オプションがどれくらい効いているのか、CPU が Core i7-8700K のマシンで比較。

$ ./configure
$ make
$ ./python Tools/pybench/pybench.py 
-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.6.3 (default, Dec 15 2017, 15:49:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.perf_counter
* timer: resolution=1e-09, implementation=clock_gettime(CLOCK_MONOTONIC)

Calibrating tests. Please wait... done.

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

* Round 1 done in 1.161 seconds.
* Round 2 done in 1.161 seconds.
* Round 3 done in 1.164 seconds.
* Round 4 done in 1.159 seconds.
* Round 5 done in 1.160 seconds.
* Round 6 done in 1.159 seconds.
* Round 7 done in 1.166 seconds.
* Round 8 done in 1.159 seconds.
* Round 9 done in 1.163 seconds.
* Round 10 done in 1.162 seconds.

-------------------------------------------------------------------------------
Benchmark: 2017-12-15 15:51:28
-------------------------------------------------------------------------------

    Rounds: 10
    Warp:   10
    Timer:  time.perf_counter

    Machine Details:
       Platform ID:    Linux-3.10.0-693.11.1.el7.x86_64-x86_64-with-centos-7.4.1708-Core
       Processor:      x86_64
    
    Python:
       Implementation: CPython
       Executable:     /home/ichy/project/daddy/tmp/Python-3.6.3/python
       Version:        3.6.3
       Compiler:       GCC 4.8.5 20150623 (Red Hat 4.8.5-16)
       Bits:           64bit
       Build:          Dec 15 2017 15:49:30 (#default)
       Unicode:        UCS4


Test                             minimum  average  operation  overhead
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:     31ms     31ms    0.06us    0.062ms
           BuiltinMethodLookup:     15ms     15ms    0.01us    0.069ms
                 CompareFloats:     18ms     18ms    0.02us    0.079ms
         CompareFloatsIntegers:     22ms     22ms    0.02us    0.059ms
               CompareIntegers:     29ms     29ms    0.02us    0.119ms
        CompareInternedStrings:     16ms     16ms    0.01us    0.313ms
                  CompareLongs:     17ms     17ms    0.02us    0.069ms
                CompareStrings:     14ms     14ms    0.01us    0.202ms
    ComplexPythonFunctionCalls:     25ms     25ms    0.13us    0.100ms
                 ConcatStrings:     18ms     18ms    0.04us    0.117ms
               CreateInstances:     27ms     27ms    0.24us    0.097ms
            CreateNewInstances:     20ms     20ms    0.24us    0.077ms
       CreateStringsWithConcat:     36ms     37ms    0.04us    0.198ms
                  DictCreation:     17ms     17ms    0.04us    0.079ms
             DictWithFloatKeys:     23ms     23ms    0.03us    0.151ms
           DictWithIntegerKeys:     20ms     20ms    0.02us    0.199ms
            DictWithStringKeys:     18ms     18ms    0.02us    0.201ms
                      ForLoops:     14ms     14ms    0.55us    0.009ms
                    IfThenElse:     16ms     16ms    0.01us    0.149ms
                   ListSlicing:     23ms     23ms    1.66us    0.013ms
                NestedForLoops:     19ms     19ms    0.01us    0.001ms
      NestedListComprehensions:     22ms     22ms    1.85us    0.020ms
          NormalClassAttribute:     59ms     60ms    0.05us    0.105ms
       NormalInstanceAttribute:     24ms     24ms    0.02us    0.105ms
           PythonFunctionCalls:     22ms     22ms    0.07us    0.059ms
             PythonMethodCalls:     30ms     30ms    0.14us    0.035ms
                     Recursion:     35ms     35ms    0.70us    0.099ms
                  SecondImport:      7ms      7ms    0.07us    0.039ms
           SecondPackageImport:      7ms      7ms    0.07us    0.039ms
         SecondSubmoduleImport:     16ms     16ms    0.16us    0.039ms
       SimpleComplexArithmetic:     13ms     13ms    0.02us    0.079ms
        SimpleDictManipulation:     37ms     38ms    0.03us    0.099ms
         SimpleFloatArithmetic:     15ms     15ms    0.01us    0.119ms
      SimpleIntFloatArithmetic:     15ms     15ms    0.01us    0.119ms
       SimpleIntegerArithmetic:     15ms     15ms    0.01us    0.119ms
      SimpleListComprehensions:     18ms     18ms    1.52us    0.019ms
        SimpleListManipulation:     18ms     18ms    0.02us    0.129ms
          SimpleLongArithmetic:     10ms     10ms    0.02us    0.059ms
                    SmallLists:     22ms     22ms    0.03us    0.079ms
                   SmallTuples:     27ms     27ms    0.05us    0.089ms
         SpecialClassAttribute:     55ms     55ms    0.05us    0.105ms
      SpecialInstanceAttribute:     24ms     24ms    0.02us    0.107ms
                StringMappings:     49ms     49ms    0.20us    0.088ms
              StringPredicates:     33ms     33ms    0.05us    0.334ms
                 StringSlicing:     24ms     25ms    0.04us    0.168ms
                     TryExcept:     13ms     13ms    0.01us    0.149ms
                    TryFinally:     20ms     20ms    0.12us    0.080ms
                TryRaiseExcept:      8ms      8ms    0.13us    0.079ms
                  TupleSlicing:     28ms     29ms    0.11us    0.009ms
                   WithFinally:     25ms     25ms    0.16us    0.079ms
               WithRaiseExcept:     23ms     23ms    0.29us    0.099ms
-------------------------------------------------------------------------------
Totals:                           1148ms   1161ms
$ ./configure --enable-optimizations
$ make
$ ./python Tools/pybench/pybench.py 
-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.6.3 (default, Dec 15 2017, 16:04:49) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.perf_counter
* timer: resolution=1e-09, implementation=clock_gettime(CLOCK_MONOTONIC)

Calibrating tests. Please wait... done.

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

* Round 1 done in 1.027 seconds.
* Round 2 done in 1.038 seconds.
* Round 3 done in 1.040 seconds.
* Round 4 done in 1.028 seconds.
* Round 5 done in 1.031 seconds.
* Round 6 done in 1.023 seconds.
* Round 7 done in 1.029 seconds.
* Round 8 done in 1.031 seconds.
* Round 9 done in 1.024 seconds.
* Round 10 done in 1.036 seconds.

-------------------------------------------------------------------------------
Benchmark: 2017-12-15 16:06:13
-------------------------------------------------------------------------------

    Rounds: 10
    Warp:   10
    Timer:  time.perf_counter

    Machine Details:
       Platform ID:    Linux-3.10.0-693.11.1.el7.x86_64-x86_64-with-centos-7.4.1708-Core
       Processor:      x86_64
    
    Python:
       Implementation: CPython
       Executable:     /home/ichy/project/daddy/tmp/Python-3.6.3/python
       Version:        3.6.3
       Compiler:       GCC 4.8.5 20150623 (Red Hat 4.8.5-16)
       Bits:           64bit
       Build:          Dec 15 2017 16:04:49 (#default)
       Unicode:        UCS4


Test                             minimum  average  operation  overhead
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:     26ms     27ms    0.05us    0.064ms
           BuiltinMethodLookup:     14ms     14ms    0.01us    0.073ms
                 CompareFloats:     13ms     13ms    0.01us    0.084ms
         CompareFloatsIntegers:     21ms     22ms    0.02us    0.063ms
               CompareIntegers:     20ms     20ms    0.01us    0.127ms
        CompareInternedStrings:     16ms     16ms    0.01us    0.321ms
                  CompareLongs:     12ms     12ms    0.01us    0.074ms
                CompareStrings:     14ms     14ms    0.01us    0.214ms
    ComplexPythonFunctionCalls:     22ms     22ms    0.11us    0.106ms
                 ConcatStrings:     19ms     19ms    0.04us    0.122ms
               CreateInstances:     23ms     24ms    0.21us    0.098ms
            CreateNewInstances:     18ms     18ms    0.21us    0.077ms
       CreateStringsWithConcat:     27ms     27ms    0.03us    0.212ms
                  DictCreation:     16ms     16ms    0.04us    0.084ms
             DictWithFloatKeys:     22ms     22ms    0.02us    0.159ms
           DictWithIntegerKeys:     19ms     19ms    0.02us    0.212ms
            DictWithStringKeys:     15ms     16ms    0.01us    0.212ms
                      ForLoops:     16ms     16ms    0.63us    0.010ms
                    IfThenElse:     16ms     16ms    0.01us    0.159ms
                   ListSlicing:     22ms     22ms    1.58us    0.013ms
                NestedForLoops:     18ms     18ms    0.01us    0.001ms
      NestedListComprehensions:     21ms     22ms    1.83us    0.021ms
          NormalClassAttribute:     40ms     41ms    0.03us    0.110ms
       NormalInstanceAttribute:     21ms     22ms    0.02us    0.110ms
           PythonFunctionCalls:     19ms     20ms    0.06us    0.063ms
             PythonMethodCalls:     25ms     25ms    0.11us    0.036ms
                     Recursion:     31ms     31ms    0.63us    0.106ms
                  SecondImport:      6ms      6ms    0.06us    0.042ms
           SecondPackageImport:      7ms      7ms    0.07us    0.042ms
         SecondSubmoduleImport:     14ms     15ms    0.15us    0.042ms
       SimpleComplexArithmetic:     15ms     15ms    0.02us    0.084ms
        SimpleDictManipulation:     33ms     33ms    0.03us    0.106ms
         SimpleFloatArithmetic:     14ms     14ms    0.01us    0.128ms
      SimpleIntFloatArithmetic:     15ms     15ms    0.01us    0.127ms
       SimpleIntegerArithmetic:     15ms     15ms    0.01us    0.128ms
      SimpleListComprehensions:     18ms     18ms    1.50us    0.021ms
        SimpleListManipulation:     17ms     17ms    0.01us    0.138ms
          SimpleLongArithmetic:     10ms     10ms    0.02us    0.063ms
                    SmallLists:     20ms     20ms    0.03us    0.084ms
                   SmallTuples:     22ms     23ms    0.04us    0.095ms
         SpecialClassAttribute:     43ms     44ms    0.04us    0.110ms
      SpecialInstanceAttribute:     21ms     22ms    0.02us    0.110ms
                StringMappings:     44ms     45ms    0.18us    0.089ms
              StringPredicates:     30ms     30ms    0.04us    0.336ms
                 StringSlicing:     21ms     21ms    0.04us    0.178ms
                     TryExcept:     12ms     12ms    0.01us    0.159ms
                    TryFinally:     18ms     18ms    0.11us    0.089ms
                TryRaiseExcept:      8ms      8ms    0.12us    0.084ms
                  TupleSlicing:     24ms     25ms    0.10us    0.010ms
                   WithFinally:     22ms     22ms    0.14us    0.084ms
               WithRaiseExcept:     22ms     22ms    0.27us    0.106ms
-------------------------------------------------------------------------------
Totals:                           1013ms   1031ms

1161ms が 1031ms に、11% ~ 12% 程度パフォーマンスが向上したと思っていいだろうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?