A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2004-July/046165.html below:

[Python-Dev] Tagged integers

[Python-Dev] Tagged integersJames Y Knight foom at fuhm.net
Thu Jul 15 00:46:43 CEST 2004
On Jul 14, 2004, at 12:28 PM, Jeff Epler wrote:
> I tried this back in 2002.
> http://mail.python.org/pipermail/python-dev/2002-August/027685.html

Interesting that I somehow missed that in my search. I had thought 
surely someone must've tried it already. Ah well. :) But, I'm glad I 
did it, because I do have somewhat different results.

1) No segfaults or other weird behavior (all tests pass)
2) With tagged integers does actually benchmark faster than without 
(although, not by all that much).

The version of the patch I sent earlier was indeed slightly slower at 
pystone than standard python. However, I have made a few changes that 
have since made it faster, instead:
1) made Py_tagged_types a const array.
2) removed inlining of creation of small ints for PyInt_FromLong. Turns 
out that makes it go slower not faster.

Anyhow, current result is a 3% overall speedup of pystone. 35791 
pystones/second (standard python 2.3.3), vs. 36900 pystones/second 
(tagged integers).

I also tried running pybench -w 5. Here's the results, compared to 
standard python 2.3.3. Overall speedup of 7.19%. I must admit I find 
these results quite puzzling, as I certainly didn't expect it to affect 
list slicing that much. Also, that Compare* are so much slower seems 
strange as well. Perhaps there's something that can be done about that.


Tests:                              per run    per oper.    diff *)
------------------------------------------------------------------------
           BuiltinFunctionCalls:     227.75 ms    0.45 us    -3.72%
            BuiltinMethodLookup:     386.30 ms    0.18 us    +3.33%
                  CompareFloats:     283.50 ms    0.16 us   +57.46%
          CompareFloatsIntegers:     343.35 ms    0.19 us    -1.07%
                CompareIntegers:     261.90 ms    0.07 us    -0.44%
         CompareInternedStrings:     210.10 ms    0.11 us   +19.68%
                   CompareLongs:     244.45 ms    0.14 us   +30.65%
                 CompareStrings:     338.05 ms    0.17 us   +11.73%
                 CompareUnicode:     265.35 ms    0.18 us   +17.70%
                  ConcatStrings:     456.20 ms    0.76 us    -3.31%
                  ConcatUnicode:     564.00 ms    0.94 us    -2.92%
                CreateInstances:     300.30 ms    1.79 us    -2.52%
        CreateStringsWithConcat:     178.35 ms    0.22 us    +4.54%
        CreateUnicodeWithConcat:     559.35 ms    0.70 us    +3.84%
                   DictCreation:     230.50 ms    0.38 us   -12.02%
              DictWithFloatKeys:     504.20 ms    0.21 us    -5.86%
            DictWithIntegerKeys:     225.10 ms    0.09 us   -22.82%
             DictWithStringKeys:     247.20 ms    0.10 us    -7.98%
                       ForLoops:     183.85 ms    4.60 us   -18.97%
                     IfThenElse:     211.60 ms    0.08 us    -2.78%
                    ListSlicing:      81.70 ms    5.84 us   -60.64%
                 NestedForLoops:     141.95 ms    0.09 us   -12.38%
           NormalClassAttribute:     296.05 ms    0.12 us    -4.25%
        NormalInstanceAttribute:     266.15 ms    0.11 us   -10.51%
            PythonFunctionCalls:     336.45 ms    0.51 us   -10.05%
              PythonMethodCalls:     277.80 ms    0.93 us    -1.35%
                      Recursion:     233.50 ms    4.67 us   -18.99%
                   SecondImport:     191.85 ms    1.92 us    +4.44%
            SecondPackageImport:     205.75 ms    2.06 us    +3.03%
          SecondSubmoduleImport:     255.75 ms    2.56 us    +3.67%
        SimpleComplexArithmetic:     206.70 ms    0.23 us    +4.21%
         SimpleDictManipulation:     172.50 ms    0.14 us   -14.22%
          SimpleFloatArithmetic:     296.15 ms    0.13 us    +8.32%
       SimpleIntFloatArithmetic:     183.85 ms    0.07 us   -33.65%
        SimpleIntegerArithmetic:     182.00 ms    0.07 us   -32.62%
         SimpleListManipulation:     217.50 ms    0.20 us   -10.12%
           SimpleLongArithmetic:     161.70 ms    0.25 us    +6.73%
                     SmallLists:     562.85 ms    0.55 us   +13.40%
                    SmallTuples:     468.30 ms    0.49 us   +15.70%
          SpecialClassAttribute:     289.00 ms    0.12 us    -5.97%
       SpecialInstanceAttribute:     460.00 ms    0.19 us    -1.33%
                 StringMappings:     319.10 ms    0.63 us    -0.17%
               StringPredicates:     297.50 ms    0.27 us    -0.77%
                  StringSlicing:     270.00 ms    0.39 us    -1.93%
                      TryExcept:     203.20 ms    0.03 us    +0.15%
                 TryRaiseExcept:     217.40 ms    3.62 us   -28.71%
                   TupleSlicing:     223.55 ms    0.53 us   -42.15%
                UnicodeMappings:     250.10 ms    3.47 us    +0.44%
              UnicodePredicates:     257.60 ms    0.29 us    +2.79%
              UnicodeProperties:     398.55 ms    0.50 us    +6.69%
                 UnicodeSlicing:     395.95 ms    0.57 us    +1.71%
------------------------------------------------------------------------
             Average round time:   15663.00 ms               -7.19%


For comparison, here's the results from standard python:
Tests:                              per run    per oper.   overhead
------------------------------------------------------------------------
           BuiltinFunctionCalls:     236.55 ms    0.46 us    0.50 ms
            BuiltinMethodLookup:     373.85 ms    0.18 us    1.00 ms
                  CompareFloats:     180.05 ms    0.10 us    1.00 ms
          CompareFloatsIntegers:     347.05 ms    0.19 us    1.00 ms
                CompareIntegers:     263.05 ms    0.07 us    2.00 ms
         CompareInternedStrings:     175.55 ms    0.09 us    3.50 ms
                   CompareLongs:     187.10 ms    0.10 us    1.00 ms
                 CompareStrings:     302.55 ms    0.15 us    3.50 ms
                 CompareUnicode:     225.45 ms    0.15 us    2.50 ms
                  ConcatStrings:     471.80 ms    0.79 us    1.00 ms
                  ConcatUnicode:     580.95 ms    0.97 us    1.00 ms
                CreateInstances:     308.05 ms    1.83 us    1.00 ms
        CreateStringsWithConcat:     170.60 ms    0.21 us    1.00 ms
        CreateUnicodeWithConcat:     538.65 ms    0.67 us    1.00 ms
                   DictCreation:     262.00 ms    0.44 us    1.00 ms
              DictWithFloatKeys:     535.60 ms    0.22 us    3.50 ms
            DictWithIntegerKeys:     291.65 ms    0.12 us    3.50 ms
             DictWithStringKeys:     268.65 ms    0.11 us    3.00 ms
                       ForLoops:     226.90 ms    5.67 us    0.50 ms
                     IfThenElse:     217.65 ms    0.08 us    2.50 ms
                    ListSlicing:     207.55 ms   14.83 us    0.50 ms
                 NestedForLoops:     162.00 ms    0.11 us    0.00 ms
           NormalClassAttribute:     309.20 ms    0.13 us    1.50 ms
        NormalInstanceAttribute:     297.40 ms    0.12 us    1.50 ms
            PythonFunctionCalls:     374.05 ms    0.57 us    1.00 ms
              PythonMethodCalls:     281.60 ms    0.94 us    0.50 ms
                      Recursion:     288.25 ms    5.77 us    0.50 ms
                   SecondImport:     183.70 ms    1.84 us    0.50 ms
            SecondPackageImport:     199.70 ms    2.00 us    0.50 ms
          SecondSubmoduleImport:     246.70 ms    2.47 us    0.50 ms
        SimpleComplexArithmetic:     198.35 ms    0.23 us    1.00 ms
         SimpleDictManipulation:     201.10 ms    0.17 us    0.50 ms
          SimpleFloatArithmetic:     273.40 ms    0.12 us    2.00 ms
       SimpleIntFloatArithmetic:     277.10 ms    0.10 us    2.00 ms
        SimpleIntegerArithmetic:     270.10 ms    0.10 us    2.00 ms
         SimpleListManipulation:     242.00 ms    0.22 us    1.00 ms
           SimpleLongArithmetic:     151.50 ms    0.23 us    0.50 ms
                     SmallLists:     496.35 ms    0.49 us    2.50 ms
                    SmallTuples:     404.75 ms    0.42 us    1.50 ms
          SpecialClassAttribute:     307.35 ms    0.13 us    2.00 ms
       SpecialInstanceAttribute:     466.20 ms    0.19 us    2.00 ms
                 StringMappings:     319.65 ms    0.63 us    1.50 ms
               StringPredicates:     299.80 ms    0.27 us    5.00 ms
                  StringSlicing:     275.30 ms    0.39 us    1.50 ms
                      TryExcept:     202.90 ms    0.03 us    3.00 ms
                 TryRaiseExcept:     304.95 ms    5.08 us    1.00 ms
                   TupleSlicing:     386.40 ms    0.92 us    0.50 ms
                UnicodeMappings:     249.00 ms    3.46 us    1.00 ms
              UnicodePredicates:     250.60 ms    0.28 us    6.50 ms
              UnicodeProperties:     373.55 ms    0.47 us    6.50 ms
                 UnicodeSlicing:     389.30 ms    0.56 us    2.00 ms
------------------------------------------------------------------------
             Average round time:   16876.00 ms

James


More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4