Python: Difference between revisions
improve syntax highlighting, prefix shell commands with "$" |
m →Regression: remove unneeded text from command samples |
||
| Line 697: | Line 697: | ||
=== Regression === | === Regression === | ||
With the <code>nixpkgs</code> version of Python you can expect anywhere from a 30-40% regression on synthetic benchmarks. For example: | With the <code>nixpkgs</code> version of Python you can expect anywhere from a 30-40% regression on synthetic benchmarks. For example: | ||
<syntaxhighlight lang=console>## Ubuntu's Python 3.8 | <syntaxhighlight lang=console> | ||
## Ubuntu's Python 3.8 | |||
$ python3.8 -c "import timeit; print(timeit.Timer('for i in range(100): oct(i)', 'gc.enable()').repeat(5))" | |||
[7.831622750498354, 7.82998560462147, 7.830805554986, 7.823807033710182, 7.84282516874373] | [7.831622750498354, 7.82998560462147, 7.830805554986, 7.823807033710182, 7.84282516874373] | ||
## nix-shell's Python 3.8 | ## nix-shell's Python 3.8 | ||
[nix-shell:~ | [nix-shell:~]$ python3.8 -c "import timeit; print(timeit.Timer('for i in range(100): oct(i)', 'gc.enable()').repeat(5))" | ||
[10.431915327906609, 10.435049421153963, 10.449542525224388, 10.440207410603762, 10.431304694153368] | [10.431915327906609, 10.435049421153963, 10.449542525224388, 10.440207410603762, 10.431304694153368] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
However, synthetic benchmarks are not necessarily reflective of real-world performance. In common real-world situations, the performance difference between optimized and non-optimized interpreters is minimal. For example, using <code>pylint</code> with a significant number of custom linters to scan a very large Python codebase (>6000 files) resulted in only a 5.5% difference. Other workflows that were not performance sensitive saw no impact to their run times. | However, synthetic benchmarks are not necessarily reflective of real-world performance. In common real-world situations, the performance difference between optimized and non-optimized interpreters is minimal. For example, using <code>pylint</code> with a significant number of custom linters to scan a very large Python codebase (>6000 files) resulted in only a 5.5% difference. Other workflows that were not performance sensitive saw no impact to their run times. | ||
=== Possible Optimizations === | === Possible Optimizations === | ||
If you run code that heavily depends on Python performance, and you desire the most performant Python interpreter possible, here are some possible things you can do: | If you run code that heavily depends on Python performance, and you desire the most performant Python interpreter possible, here are some possible things you can do: | ||