Some profiling data (via linux-perf) for
sage: def f():
....: for i in [x]range(100000000):
....: a+a
Py2:
Samples: 26K of event 'cycles', Event count (approx.): 17630706503
Children Self Command Shared Object Symbol
+ 77,85% 47,79% python2 libpython2.7.so.1.0 [.] PyEval_EvalFrameEx
+ 75,42% 0,00% python2 libpython2.7.so.1.0 [.] PyEval_EvalCodeEx
+ 75,42% 0,00% python2 libpython2.7.so.1.0 [.] call_function (inlined)
+ 75,42% 0,00% python2 libpython2.7.so.1.0 [.] fast_function (inlined)
+ 75,39% 0,00% python2 libpython2.7.so.1.0 [.] PyObject_Call
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] PyEval_EvalCode
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] Py_Main
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] PyRun_SimpleFileExFlags
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] PyRun_FileExFlags
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] run_mod (inlined)
+ 75,38% 0,00% python2 libpython2.7.so.1.0 [.] function_call
+ 75,37% 0,00% python2 python2.7 [.] _start
+ 75,37% 0,00% python2
libc-2.29.so [.] 0x00007fde64129bba
+ 75,34% 0,00% python2 libpython2.7.so.1.0 [.] exec_statement (inlined)
+ 75,34% 0,00% python2 libpython2.7.so.1.0 [.] ext_do_call (inlined)
- 75,33% 0,00% python2 libpython2.7.so.1.0 [.] builtin_eval
builtin_eval
PyEval_EvalCode
PyEval_EvalCodeEx
PyEval_EvalFrameEx
call_function (inlined)
fast_function (inlined)
- PyEval_EvalFrameEx
+ 15,44% PyNumber_Add
6,93% lookdict <---
+ 2,28% __pyx_f_4sage_5rings_7integer_fast_tp_dealloc
- 1,82% PyInt_FromLong <---
PyInt_FromLong
0,91% rangeiter_next
0,82% PyInt_FromLong@plt
0,66% 0x7fde644a9060
0,61% PyThread_acquire_lock
+ 17,25% 6,03% python2 libpython2.7.so.1.0 [.] binary_op1
+ 16,84% 1,76% python2 libpython2.7.so.1.0 [.] PyNumber_Add
+ 15,05% 5,02% python2 integer.so [.] __pyx_pw_4sage_5rings_7integer_7Integer_63__add__
+ 13,43% 13,43% python2 libpython2.7.so.1.0 [.] lookdict
+ 12,52% 0,00% python2 integer.so [.] __pyx_pf_4sage_5rings_7integer_7Integer_62__add__ (inlined)
+ 9,98% 9,56% python2 libgmp.so.23.0.3 [.] __gmpz_add
+ 6,01% 0,00% python2 anon [.] 0x00007fde62ec9d3f
+ 3,70% 3,70% python2 integer.so [.] __pyx_f_4sage_5rings_7integer_fast_tp_dealloc
+ 3,29% 0,00% python2 integer.so [.] __pyx_f_4sage_3ext_7stdsage_PY_NEW (inlined)
+ 3,10% 3,10% python2 integer.so [.] __pyx_f_4sage_5rings_7integer_fast_tp_new
+ 3,09% 0,00% python2 [unknown] [k] 0xffffffffffffffff
+ 2,96% 0,00% python2 libgmp.so.23.0.3 [.] __gmpn_add (inlined)
Py3:
Samples: 39K of event 'cycles', Event count (approx.): 26191091752
Children Self Command Shared Object Symbol
+ 79,05% 24,87% python3 libpython3.7m.so.1.0 [.] _PyEval_EvalFrameDefault
+ 78,13% 0,00% python3 [unknown] [.] 0xffffffffffffffff
+ 77,94% 0,00% python3 libpython3.7m.so.1.0 [.] _PyEval_EvalCodeWithName
+ 77,94% 0,00% python3 libpython3.7m.so.1.0 [.] call_function (inlined)
+ 77,94% 0,00% python3 libpython3.7m.so.1.0 [.] function_code_fastcall
+ 77,94% 0,00% python3 libpython3.7m.so.1.0 [.] _PyFunction_FastCallKeywords
+ 77,89% 0,00% python3 libpython3.7m.so.1.0 [.] PyEval_EvalCodeEx
+ 77,89% 0,00% python3 libpython3.7m.so.1.0 [.] PyEval_EvalCode
+ 77,89% 0,00% python3 libpython3.7m.so.1.0 [.] _PyMethodDef_RawFastCallKeywords
+ 77,88% 0,00% python3 libpython3.7m.so.1.0 [.] _PyFunction_FastCallDict
+ 77,86% 0,00% python3 libpython3.7m.so.1.0 [.] _PyObject_Call_Prepend
+ 77,85% 0,00% python3 libpython3.7m.so.1.0 [.] _PyCFunction_FastCallKeywords
+ 77,85% 0,00% python3 libpython3.7m.so.1.0 [.] PyObject_Call
+ 77,84% 0,00% python3 libpython3.7m.so.1.0 [.] do_call_core (inlined)
+ 77,84% 0,00% python3 libpython3.7m.so.1.0 [.] builtin_exec
+ 77,84% 0,00% python3 libpython3.7m.so.1.0 [.] builtin_exec_impl (inlined)
- 77,83% 0,00% python3 libpython3.7m.so.1.0 [.] builtin_eval
builtin_eval
builtin_eval_impl (inlined)
PyEval_EvalCode
PyEval_EvalCodeEx
_PyEval_EvalCodeWithName
_PyEval_EvalFrameDefault
call_function (inlined)
function_code_fastcall
- _PyEval_EvalFrameDefault
- 22,27% _PyDict_LoadGlobal <---
- 17,48% lookdict_unicode_nodummy
- lookdict_unicode_nodummy
4,12% dk_get_index (inlined)
+ 10,77% PyNumber_Add
- 9,66% PyLong_FromLong <---
- 7,44% _PyLong_New
- 5,22% _PyObject_Malloc
+ pymalloc_alloc (inlined)
- 5,85% _PyObject_Free
- _PyObject_Free
- pymalloc_free (inlined)
1,16% address_in_range (inlined)
+ 1,86% __pyx_f_4sage_5rings_7integer_fast_tp_dealloc
1,41% _PyDict_LoadGlobal@plt
0,78% rangeiter_next
0,55% PyLong_FromLong@plt
+ 77,83% 0,00% python3 libpython3.7m.so.1.0 [.] builtin_eval_impl (inlined)
+ 25,69% 8,20% python3 libpython3.7m.so.1.0 [.] _PyDict_LoadGlobal
+ 20,53% 20,51% python3 libpython3.7m.so.1.0 [.] lookdict_unicode_nodummy
+ 12,20% 3,16% python3 libpython3.7m.so.1.0 [.] binary_op1
+ 11,68% 1,05% python3 libpython3.7m.so.1.0 [.] PyNumber_Add
+ 10,97% 3,73% python3
integer.cpython-37m-x86_64-linux-gnu.so [.] __pyx_pw_4sage_5rings_7integer_7Integer_63__add__
+ 10,64% 2,79% python3 libpython3.7m.so.1.0 [.] PyLong_FromLong
+ 9,20% 0,00% python3
integer.cpython-37m-x86_64-linux-gnu.so [.] __pyx_pf_4sage_5rings_7integer_7Integer_62__add__ (inlined)
+ 7,92% 2,02% python3 libpython3.7m.so.1.0 [.] _PyLong_New
+ 7,49% 7,15% python3 libgmp.so.23.0.3 [.] __gmpz_add
+ 7,29% 1,95% python3 libpython3.7m.so.1.0 [.] _PyObject_Free
+ 6,42% 0,00% python3 libpython3.7m.so.1.0 [.] pymalloc_free (inlined)
+ 6,42% 6,42% python3 libpython3.7m.so.1.0 [.] pymalloc_free.isra.0
+ 5,40% 2,43% python3 libpython3.7m.so.1.0 [.] _PyObject_Malloc
+ 4,54% 0,00% python3 libpython3.7m.so.1.0 [.] pymalloc_alloc (inlined)
+ 4,54% 4,54% python3 libpython3.7m.so.1.0 [.] pymalloc_alloc.isra.6.part.7
+ 4,12% 0,00% python3 libpython3.7m.so.1.0 [.] dk_get_index (inlined)
+ 3,89% 0,00% python3 anon [.] 0x00007fb9cc7a983f
+ 3,58% 0,00% python3 [heap] [.] 0x0000558b4e6c58af
+ 3,33% 0,00% python3 libpython3.7m.so.1.0 [.] pymalloc_alloc (inlined)
+ 2,38% 2,38% python3
integer.cpython-37m-x86_64-linux-gnu.so [.] __pyx_f_4sage_5rings_7integer_fast_tp_dealloc
+ 2,31% 0,00% python3 anon [.] 0x00007fb9cbe17047
+ 2,26% 0,00% python3
integer.cpython-37m-x86_64-linux-gnu.so [.] __pyx_f_4sage_3ext_7stdsage_PY_NEW (inlined)
+ 2,22% 0,00% python3 libgmp.so.23.0.3 [.] __gmpn_add (inlined)
--
Marc