[pypy-dev] Micro benchmarks on i386 and ppc
Jacob Hallén
jacob at openend.se
Sun Feb 24 21:51:01 CET 2008
Using the outputs of Leonardo's test run on i386 and a run of the same
revision on Tuatara (ppc), I have calculated the speed ratios between the two
architectures. For each ratio, there are 4 numbers that can vary:
- The speed of CPython for the test on ppc
- The speed of CPython for the test on i386
- The speed of PyPy for the test on ppc
- The speed of PyPy for the test on i386
In the list below, the first number is the ratio, with smaller numbers meaning
that PyPy is doing better on i386 and larger meaning that PyPy is relatively
better on ppc. The first number in parenthesis after the name of the test is
relative performance to CPython on i386, the second number in parenthesis is
relative performance on ppc.
I'm a bit surprised that some tests have a huge difference in relative
performance on the two platforms. Maybe something worth looking into.
0.41 test_unicode.test_bad_case_python2_5() (0.11), (0.27)
0.47 test_unicode.test_find_worstcase() (0.58), (1.24)
0.47 test_unicode.test_find_pattern1() (0.37), (0.79)
0.53 test_unicode.test_count_worstcase() (0.48), (0.90)
0.70 test_unicode.test_find_pattern8() (0.80), (1.14)
0.71 test_unicode.test_find_pattern2() (0.80), (1.13)
0.71 test_unicode.test_find_pattern4() (0.80), (1.13)
0.71 test_unicode.test_find_pattern16() (0.81), (1.14)
0.76 test_dict.test_dict_instance_setattr_instance_dict() (1.96), (2.59)
0.76 test_exception.test_reraise() (1.24), (1.63)
0.79 test_list.test_list_setitem() (2.06), (2.61)
0.79 test_dict.test_dict_setitem1() (3.43), (4.32)
0.83 test_exception.test_raise_builtin_exception() (1.91), (2.31)
0.84 test_count1.test_call_nested_function() (1.80), (2.15)
0.84 test_exception.test_raise_user_exception() (1.91), (2.27)
0.84 test_bltn.test_call_sin() (1.24), (1.47)
0.86 test_count1.test_count_in_attr() (1.70), (1.97)
0.87 test_count1.test_call_nested_function_other_count() (1.86), (2.15)
0.87 test_formatting.test_dict_formatting() (2.12), (2.45)
0.87 test_formatting.test_simple_formatting() (0.60), (0.69)
0.87 test_count1.test_count_in_slot() (2.37), (2.72)
0.87 test_create1.test_simple_loop_with_old_style_class_creation() (2.72),
(3.12)
0.88 test_count1.test_call_nested_function_many_args() (1.77), (2.02)
0.88 test_count1.test_call_function() (1.88), (2.13)
0.88 test_dict.test_dict_setitem2() (2.34), (2.65)
0.88 test_count1.test_call_function_with_arguments_in_cellvars() (1.29),
(1.46)
0.89 test_count1.test_call_function_without_arguments_in_cellvars() (1.47),
(1.66)
0.90 test_formatting.test_format_long() (0.43), (0.48)
0.90 test_create1.test_simple_loop_with_new_style_class_creation() (3.54),
(3.93)
0.90 test_exception.test_except_specific_builtin_exception() (1.79), (1.98)
0.90 test_exception.test_except_specific_user_exception() (1.89), (2.09)
0.90 test_dict.test_dict_instance_setnewattr_instance_dict() (2.00), (2.21)
0.92 test_bltn.test_call_fabs() (1.33), (1.44)
0.93 test_create1.test_simple_loop_with_new_style_class_new() (1.89), (2.03)
0.93 test_dict.test_dict_creation_mode1() (1.93), (2.07)
0.94 test_dict.test_dict_instance_getattr_instance_dict() (2.18), (2.33)
0.95 test_exception.test_except_multiple_user_exception() (3.01), (3.17)
0.95 test_bltn.test_isinstance3() (1.60), (1.68)
0.95 test_count1.test_call_method_of_new_style_class() (1.62), (1.70)
0.95 test_count1.test_loop_unrolled() (1.25), (1.31)
0.97 test_exception.test_except_multiple_builtin_exception() (2.67), (2.76)
0.98 test_count1.test_loop() (1.93), (1.96)
0.99 test_exception.test_try_except_else() (2.24), (2.27)
0.99 test_create1.test_simple_loop() (2.60), (2.63)
1.00 test_count1.test_loop_other_count() (2.16), (2.17)
1.00 test_count1.test_count_in_dict() (2.06), (2.06)
1.00 test_exception.test_try_except_finally() (2.14), (2.13)
1.01 test_exception.test_try_except() (2.27), (2.25)
1.01 test_bltn.test_isinstance1() (1.36), (1.34)
1.02 test_bltn.test_isinstance2() (1.34), (1.32)
1.02 test_dict.test_dict_class_dict_getmethod() (1.58), (1.55)
1.03 test_dict.test_dict_creation_mode2() (2.02), (1.96)
1.05 test_count1.test_call_method_of_old_style_class() (1.59), (1.51)
1.06 test_exception.test_instantiate_builtin_exception() (1.11), (1.05)
1.06 test_list.test_list_getitem() (3.12), (2.95)
1.06 test_list.test_list_append() (2.39), (2.25)
1.07 test_dict.test_dict_getitem() (2.45), (2.29)
1.10 test_exception.test_instantiate_user_exception() (1.34), (1.22)
1.12 test_formatting.test_format_unicode() (0.45), (0.40)
1.15 test_list.test_list_slice() (2.80), (2.44)
1.16 test_dict.test_dict_raw_range() (1.68), (1.45)
1.17 test_count1.test_count_in_global2() (2.14), (1.83)
1.17 test_count1.test_count_in_global() (2.13), (1.82)
1.21 test_formatting.test_number_formatting() (1.62), (1.34)
1.23 test_dict.test_dict_creation_mode3() (1.03), (0.84)
1.31 test_formatting.test_repr_formatting() (4.61), (3.53)
1.51 test_list.test_list_extend() (1.40), (0.93)
2.03 test_dispatch.test_dispatch_nop() (1.36), (0.67)
Jacob
More information about the pypy-dev
mailing list