Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Test results with no optimization, -O, and -O2 optimization. -O3 not done because function inlining will render the test irrelevant. The results show a repeatable speedup using the function pointers.
- gcc test.c -o test
- for n in {1..3}; do echo Run $n; ./test; echo; done
- Run 1
- work_function_switch test 0 0.718000 seconds : result sum = 70000000
- work_function_switch test 1 5.381000 seconds : result sum = 700000000
- work_function_switch test 2 12.028000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.296000 seconds : result sum = 70000000
- work_function_ptr test 1 2.512000 seconds : result sum = 700000000
- work_function_ptr test 2 7.582000 seconds : result sum = 2100000000
- Run 2
- work_function_switch test 0 0.405000 seconds : result sum = 70000000
- work_function_switch test 1 3.807000 seconds : result sum = 700000000
- work_function_switch test 2 11.497000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.265000 seconds : result sum = 70000000
- work_function_ptr test 1 2.511000 seconds : result sum = 700000000
- work_function_ptr test 2 7.551000 seconds : result sum = 2100000000
- Run 3
- work_function_switch test 0 0.358000 seconds : result sum = 70000000
- work_function_switch test 1 3.760000 seconds : result sum = 700000000
- work_function_switch test 2 11.278000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.297000 seconds : result sum = 70000000
- work_function_ptr test 1 2.558000 seconds : result sum = 700000000
- work_function_ptr test 2 7.566000 seconds : result sum = 2100000000
- gcc test.c -O -o test
- for n in {1..3}; do echo Run $n; ./test; echo; done
- Run 1
- work_function_switch test 0 0.577000 seconds : result sum = 70000000
- work_function_switch test 1 4.805000 seconds : result sum = 700000000
- work_function_switch test 2 11.466000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.234000 seconds : result sum = 70000000
- work_function_ptr test 1 2.043000 seconds : result sum = 700000000
- work_function_ptr test 2 6.115000 seconds : result sum = 2100000000
- Run 2
- work_function_switch test 0 0.327000 seconds : result sum = 70000000
- work_function_switch test 1 3.604000 seconds : result sum = 700000000
- work_function_switch test 2 10.358000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.218000 seconds : result sum = 70000000
- work_function_ptr test 1 1.888000 seconds : result sum = 700000000
- work_function_ptr test 2 5.709000 seconds : result sum = 2100000000
- Run 3
- work_function_switch test 0 0.327000 seconds : result sum = 70000000
- work_function_switch test 1 3.385000 seconds : result sum = 700000000
- work_function_switch test 2 9.797000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.203000 seconds : result sum = 70000000
- work_function_ptr test 1 1.794000 seconds : result sum = 700000000
- work_function_ptr test 2 5.304000 seconds : result sum = 2100000000
- gcc test.c -O2 -o test
- $ for n in {1..3}; do echo Run $n; ./test; echo; done
- Run 1
- work_function_switch test 0 0.483000 seconds : result sum = 70000000
- work_function_switch test 1 4.025000 seconds : result sum = 700000000
- work_function_switch test 2 10.093000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.265000 seconds : result sum = 70000000
- work_function_ptr test 1 2.091000 seconds : result sum = 700000000
- work_function_ptr test 2 5.835000 seconds : result sum = 2100000000
- Run 2
- work_function_switch test 0 0.265000 seconds : result sum = 70000000
- work_function_switch test 1 2.667000 seconds : result sum = 700000000
- work_function_switch test 2 8.112000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.203000 seconds : result sum = 70000000
- work_function_ptr test 1 1.716000 seconds : result sum = 700000000
- work_function_ptr test 2 5.039000 seconds : result sum = 2100000000
- Run 3
- work_function_switch test 0 0.249000 seconds : result sum = 70000000
- work_function_switch test 1 2.668000 seconds : result sum = 700000000
- work_function_switch test 2 7.971000 seconds : result sum = 2100000000
- work_function_ptr test 0 0.188000 seconds : result sum = 70000000
- work_function_ptr test 1 1.560000 seconds : result sum = 700000000
- work_function_ptr test 2 4.711000 seconds : result sum = 2100000000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement