By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,035 Members | 1,384 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,035 IT Pros & Developers. It's quick & easy.

best gcc version for Python

P: n/a
I've just been testing out Jakob Sievers' speedup of Python 2.5.2 by
compiling on freebsd with gcc-4.3.3 (the standard freebsd 6.1 gcc is 3.4.4).

I'm glad to say that his modification did improve pybench overall by
about 12%, but during the testing I noticed that in fact some of the
pybench results were much worse using gcc-4.3.3 compared to gcc-3.4.4.

Of course it may be that freebsd has put more work into 3.4.4, but when
I did a direct comparison of stock Python-2.5.2 under both compilers I
see the results below which seems to indicate some quite large
differences in how the compilers perform and the older one is better
overall by about 6%. Is there a best version of gcc for python?
-------------------------------------------------------------------------------
PYBENCH 2.0
-------------------------------------------------------------------------------
* using Python 2.5.2
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.time

Calibrating tests. Please wait...

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

* Round 1 done in 9.697 seconds.
* Round 2 done in 9.746 seconds.
* Round 3 done in 9.631 seconds.
* Round 4 done in 9.646 seconds.
* Round 5 done in 9.727 seconds.
* Round 6 done in 9.649 seconds.
* Round 7 done in 9.759 seconds.
* Round 8 done in 9.660 seconds.
* Round 9 done in 9.661 seconds.
* Round 10 done in 9.671 seconds.

-------------------------------------------------------------------------------
Benchmark: 2008-11-16 12:22:59
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: FreeBSD-6.1-SECURITY-i386-32bit
Processor: i386

Python:
Executable: /home/rptlab/bin/python25
Version: 2.5.2
Compiler: GCC 3.4.4 [FreeBSD
Bits: 32bit
Build: Nov 16 2008 12:15:52 (#r252:60911)
Unicode: UCS2
-------------------------------------------------------------------------------
Comparing with: pybench.ref.x
-------------------------------------------------------------------------------

Rounds: 10
Warp: 10
Timer: time.time

Machine Details:
Platform ID: FreeBSD-6.1-SECURITY-i386-32bit
Processor: i386

Python:
Executable: /home/rptlab/bin/xpython
Version: 2.5.2
Compiler: GCC 4.3.3 20081106 (prerelease)
Bits: 32bit
Build: Nov 16 2008 11:38:57 (#r252:60911)
Unicode: UCS2
Test minimum run-time average run-time
this other diff this other diff
-------------------------------------------------------------------------------
BuiltinFunctionCalls: 202ms 209ms -3.6% 205ms 213ms -3.7%
BuiltinMethodLookup: 153ms 146ms +5.2% 156ms 146ms +6.7%
CompareFloats: 134ms 149ms -9.6% 134ms 149ms -9.6%
CompareFloatsIntegers: 132ms 147ms -9.9% 132ms 147ms -9.9%
CompareIntegers: 131ms 173ms -24.4% 131ms 173ms -24.4%
CompareInternedStrings: 130ms 142ms -7.8% 131ms 142ms -7.7%
CompareLongs: 113ms 146ms -23.1% 113ms 146ms -23.1%
CompareStrings: 138ms 138ms -0.1% 138ms 138ms -0.5%
CompareUnicode: 126ms 130ms -2.8% 126ms 130ms -3.3%
ConcatStrings: 233ms 422ms -44.9% 254ms 452ms -43.9%
ConcatUnicode: 187ms 300ms -37.5% 193ms 340ms -43.3%
CreateInstances: 147ms 159ms -7.5% 148ms 160ms -7.6%
CreateNewInstances: 132ms 138ms -4.9% 132ms 139ms -4.7%
CreateStringsWithConcat: 176ms 174ms +1.4% 177ms 174ms +1.4%
CreateUnicodeWithConcat: 143ms 154ms -7.3% 147ms 156ms -5.6%
DictCreation: 118ms 150ms -21.1% 119ms 151ms -21.1%
DictWithFloatKeys: 163ms 178ms -8.5% 163ms 178ms -8.4%
DictWithIntegerKeys: 123ms 137ms -10.5% 123ms 138ms -10.7%
DictWithStringKeys: 117ms 136ms -13.7% 118ms 136ms -13.6%
ForLoops: 111ms 122ms -9.0% 111ms 123ms -9.8%
IfThenElse: 121ms 132ms -7.8% 121ms 132ms -8.1%
ListSlicing: 115ms 115ms +0.6% 116ms 115ms +0.8%
NestedForLoops: 138ms 145ms -4.8% 139ms 145ms -4.3%
NormalClassAttribute: 142ms 140ms +1.2% 144ms 141ms +2.3%
NormalInstanceAttribute: 136ms 133ms +2.5% 137ms 134ms +2.2%
PythonFunctionCalls: 128ms 133ms -3.8% 128ms 133ms -4.0%
PythonMethodCalls: 162ms 173ms -6.2% 163ms 174ms -6.7%
Recursion: 175ms 180ms -2.8% 175ms 181ms -3.1%
SecondImport: 222ms 213ms +4.2% 224ms 213ms +5.0%
SecondPackageImport: 230ms 220ms +4.5% 232ms 221ms +5.0%
SecondSubmoduleImport: 279ms 263ms +5.9% 280ms 263ms +6.1%
SimpleComplexArithmetic: 143ms 148ms -3.7% 143ms 148ms -3.6%
SimpleDictManipulation: 132ms 139ms -5.5% 133ms 140ms -5.2%
SimpleFloatArithmetic: 128ms 128ms +0.2% 130ms 129ms +0.6%
SimpleIntFloatArithmetic: 110ms 113ms -2.2% 110ms 113ms -2.2%
SimpleIntegerArithmetic: 110ms 113ms -2.2% 110ms 113ms -2.2%
SimpleListManipulation: 114ms 124ms -7.8% 115ms 125ms -7.5%
SimpleLongArithmetic: 121ms 121ms -0.3% 121ms 122ms -0.5%
SmallLists: 138ms 143ms -3.3% 140ms 149ms -5.9%
SmallTuples: 149ms 159ms -6.1% 153ms 159ms -4.2%
SpecialClassAttribute: 141ms 138ms +2.1% 141ms 139ms +2.0%
SpecialInstanceAttribute: 227ms 216ms +5.2% 227ms 216ms +5.3%
StringMappings: 1827ms 1796ms +1.7% 1828ms 1798ms +1.7%
StringPredicates: 378ms 369ms +2.3% 378ms 369ms +2.3%
StringSlicing: 140ms 179ms -21.7% 145ms 185ms -21.6%
TryExcept: 111ms 112ms -0.7% 111ms 112ms -0.8%
TryRaiseExcept: 130ms 124ms +4.7% 131ms 125ms +4.6%
TupleSlicing: 130ms 134ms -2.9% 133ms 135ms -1.5%
UnicodeMappings: 125ms 123ms +0.8% 126ms 124ms +1.8%
UnicodePredicates: 135ms 132ms +2.3% 136ms 133ms +2.1%
UnicodeProperties: 199ms 201ms -1.2% 199ms 202ms -1.2%
UnicodeSlicing: 156ms 233ms -33.2% 166ms 244ms -32.2%
-------------------------------------------------------------------------------
Totals: 9601ms 10240ms -6.2% 9685ms 10363ms -6.5%

--
Robin Becker
Nov 16 '08 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Robin Becker wrote:
I've just been testing out Jakob Sievers' speedup of Python 2.5.2 by
compiling on freebsd with gcc-4.3.3 (the standard freebsd 6.1 gcc is
3.4.4).

I'm glad to say that his modification did improve pybench overall by
about 12%, but during the testing I noticed that in fact some of the
pybench results were much worse using gcc-4.3.3 compared to gcc-3.4.4.
I recall some issues with gcc 4.3 during the development of Python 2.6.
We had to add some flags to compile Python correctly. Python 2.5 may not
be compatible with 4.3.

Christian

Nov 16 '08 #2

This discussion thread is closed

Replies have been disabled for this discussion.