On 07/15/2014 09:50 AM, Andrew Pinski wrote:
On Tue, Jul 15, 2014 at 12:45 AM, Martin Liška <mli...@suse.cz> wrote:
Hello,
following table compares optimization levels as -O0, -Os, -O1-3 and
-Ofast. Columns in the table include all ELF sections bigger than 5% for a
binary. Apart from that I took -O2 as a base option and I tried to disable
every option in this level. Similarly I measured impact of the rest of
optimizations enabled in O3 or Ofast. That gives us about 100 configurations
that can be compared for speed. I would like to ask Honza to mark
configurations that make sense to be run for speed comparison.
Can you remove debug_str and debug_info from this list as they only
change the file size and not the mapped in size?
Thanks,
Andrew
Sure, I added new column SIZE_WITHOUT_DEBUG, where I compare sum of all
sections that do not start with '.debug.*'.
Martin
Thanks,
Martin
+--------------------------------------------+---------+---------+-------------+------------+-----------+-------------------+---------+---------+---------+---------+---------+--------------------+
| | .bss | .data | .debug_info
| .debug_str | .eh_frame | .gcc_except_table | .rodata | .strtab | .symtab |
.text | SIZE | SIZE_WITHOUT_DEBUG |
+--------------------------------------------+---------+---------+-------------+------------+-----------+-------------------+---------+---------+---------+---------+---------+--------------------+
| Os | 97.85% | 98.93% | 125.83%
| 109.82% | 94.50% | 77.38% | 93.90% | 100.75% | 99.97% |
79.24% | 86.23% | 85.60% |
| O1 | 100.01% | 100.00% | 100.00%
| 100.00% | 93.15% | 87.20% | 100.26% | 99.21% | 99.52% |
93.46% | 95.49% | 95.36% |
| O2_fbranch_probabilities | 100.00% | 100.00% | 100.00%
| 100.00% | 99.65% | 97.87% | 100.00% | 99.46% | 99.72% |
98.25% | 98.71% | 98.68% |
| O2_fwrapv | 100.00% | 100.00% | 100.00%
| 100.00% | 99.71% | 100.02% | 100.00% | 100.00% | 99.99% |
98.61% | 98.90% | 98.86% |
| O2_fno_align_jumps | 100.00% | 100.00% | 100.00%
| 100.00% | 99.99% | 99.97% | 100.00% | 100.00% | 100.00% |
98.19% | 98.94% | 98.92% |
| O2_fno_align_functions | 100.00% | 100.00% | 100.00%
| 100.00% | 99.99% | 100.02% | 100.00% | 100.00% | 100.00% |
98.65% | 99.27% | 99.25% |
| O2_fno_tree_pre | 100.00% | 100.00% | 100.00%
| 100.00% | 99.66% | 100.46% | 99.83% | 99.88% | 99.58% |
98.94% | 99.29% | 99.25% |
| O2_fno_align_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 99.96% | 99.98% | 100.00% | 100.00% | 100.00% |
99.05% | 99.42% | 99.40% |
| O2_fipa_pta | 100.00% | 100.00% | 100.00%
| 100.00% | 100.39% | 98.64% | 100.00% | 99.99% | 99.96% |
99.32% | 99.47% | 99.45% |
| O2_fno_caller_saves | 100.00% | 100.00% | 100.00%
| 100.00% | 100.10% | 100.08% | 100.00% | 100.00% | 100.01% |
99.29% | 99.54% | 99.53% |
| O2_fno_inline_small_functions | 100.01% | 100.00% | 100.00%
| 100.00% | 100.31% | 99.41% | 100.01% | 100.13% | 100.13% |
99.23% | 99.66% | 99.65% |
| O2_fno_devirtualize_speculatively | 100.00% | 100.00% | 100.00%
| 100.00% | 99.87% | 98.24% | 100.00% | 99.98% | 99.98% |
99.50% | 99.73% | 99.73% |
| O2_fno_devirtualize | 100.00% | 100.00% | 100.00%
| 100.00% | 99.87% | 98.26% | 100.00% | 99.98% | 99.98% |
99.50% | 99.73% | 99.73% |
| O2_ftree_slp_vectorize | 100.00% | 100.00% | 100.00%
| 100.00% | 99.07% | 100.00% | 100.82% | 99.88% | 99.87% |
99.89% | 99.92% | 99.92% |
| O2_fira_loop_pressure | 100.00% | 100.00% | 100.00%
| 100.00% | 99.97% | 100.02% | 100.00% | 100.00% | 99.98% |
99.90% | 99.97% | 99.97% |
| O2_fsignaling_nans | 100.00% | 100.00% | 100.00%
| 100.00% | 100.04% | 100.02% | 99.56% | 100.03% | 99.81% |
100.00% | 99.98% | 99.97% |
| O2_fno_optimize_sibling_calls | 100.00% | 100.00% | 100.00%
| 100.00% | 99.14% | 99.99% | 100.00% | 100.01% | 100.02% |
99.99% | 99.98% | 99.98% |
| O2_fgcse_after_reload | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.04% | 100.00% | 100.00% | 100.00% |
99.98% | 99.98% | 99.98% |
| O2_fno_ipa_sra | 100.00% | 100.00% | 100.00%
| 100.00% | 99.97% | 99.90% | 100.01% | 99.81% | 99.98% |
99.98% | 99.98% | 99.98% |
| O2_fno_reorder_blocks_and_partition | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 99.68% | 100.00% | 99.79% | 100.00% |
99.99% | 99.99% | 99.99% |
| O2_fsched2_use_superblocks | 100.00% | 100.00% | 100.00%
| 100.00% | 100.01% | 100.00% | 100.00% | 100.00% | 100.00% |
99.99% | 99.99% | 99.99% |
| O2_fdata_sections | 99.63% | 99.73% | 100.00%
| 100.00% | 100.00% | 100.00% | 99.88% | 100.00% | 100.00% |
100.00% | 99.99% | 99.99% |
| O2_fno_reorder_functions | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
99.98% | 99.99% | 99.99% |
| O2_fno_schedule_insns2 | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
99.98% | 100.00% | 100.00% |
| O2_fgcse_sm | 100.00% | 100.00% | 100.00%
| 100.00% | 100.01% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fmodulo_sched | 100.00% | 100.00% | 100.00%
| 100.00% | 99.99% | 100.02% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fisolate_erroneous_paths_attribute | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fgcse_las | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fshort_wchar | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_tree_builtin_call_dce | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fdelayed_branch | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2 | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsched_spec_load_dangerous | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_ftree_lrs | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_reorder_blocks | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fselective_scheduling | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_freg_struct_return | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsection_anchors | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_strict_aliasing | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fbranch_target_load_optimize2 | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fbtr_bb_exclusive | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_funsafe_math_optimizations | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fpeel_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fomit_frame_pointer | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fnothrow_opt | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_freschedule_modulo_scheduled_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fvar_tracking_assignments_toggle | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fvpt | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsel_sched_pipelining_outer_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fvariable_expansion_in_unroller | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_ffinite_math_only | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fopt_info | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fstrict_enums | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fcx_limited_range | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_funwind_tables | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsel_sched_reschedule_pipelined | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsched_spec_load | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_align_labels | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fvar_tracking_uninit | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsched_pressure | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsel_sched_pipelining | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fbranch_target_load_optimize | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fsched_stalled_insns | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_hoist_adjacent_loads | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_fno_thread_jumps | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
100.00% | 100.00% | 100.00% |
| O2_flive_range_shrinkage | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 99.99% | 100.00% | 100.00% | 99.99% |
99.98% | 100.00% | 100.00% |
| O2_fno_optimize_strlen | 100.00% | 100.00% | 100.00%
| 100.00% | 99.99% | 100.00% | 100.00% | 99.99% | 99.98% |
100.02% | 100.00% | 100.00% |
| O2_fno_ipa_cp | 100.00% | 100.00% | 100.00%
| 100.00% | 100.02% | 100.03% | 100.00% | 99.88% | 100.00% |
100.01% | 100.00% | 100.00% |
| O2_fno_isolate_erroneous_paths_dereference | 100.00% | 100.00% | 100.00%
| 100.00% | 100.01% | 100.04% | 100.00% | 100.00% | 100.00% |
100.01% | 100.01% | 100.01% |
| O2_ftree_loop_if_convert_stores | 100.00% | 100.00% | 100.00%
| 100.00% | 100.05% | 100.00% | 100.00% | 100.00% | 100.01% |
99.99% | 100.01% | 100.01% |
| O2_fcx_fortran_rules | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.01% | 100.02% |
100.01% | 100.01% | 100.01% |
| O2_fexceptions | 100.00% | 100.00% | 100.00%
| 100.00% | 100.10% | 100.00% | 100.00% | 100.00% | 100.00% |
100.01% | 100.01% | 100.01% |
| O2_fmerge_all_constants | 100.00% | 100.00% | 100.00%
| 100.00% | 99.94% | 100.00% | 100.85% | 100.15% | 100.10% |
99.89% | 100.01% | 100.01% |
| O2_ftree_coalesce_inlined_vars | 100.00% | 100.00% | 100.00%
| 100.00% | 100.02% | 100.00% | 99.99% | 100.00% | 100.00% |
100.02% | 100.01% | 100.01% |
| O2_funsafe_loop_optimizations | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 99.99% | 100.00% | 100.00% | 100.00% |
100.03% | 100.02% | 100.02% |
| O2_fno_tree_switch_conversion | 100.00% | 100.00% | 100.00%
| 100.00% | 100.01% | 100.01% | 100.31% | 99.97% | 99.97% |
100.01% | 100.05% | 100.05% |
| O2_fconserve_stack | 100.00% | 100.00% | 100.00%
| 100.00% | 101.03% | 99.16% | 100.00% | 100.47% | 100.28% |
99.93% | 100.05% | 100.05% |
| O2_fno_tree_tail_merge | 100.00% | 100.00% | 100.00%
| 100.00% | 99.95% | 100.49% | 100.00% | 100.00% | 99.99% |
100.11% | 100.06% | 100.06% |
| O2_fno_rerun_cse_after_loop | 100.00% | 100.00% | 100.00%
| 100.00% | 100.04% | 100.03% | 100.00% | 100.01% | 100.06% |
100.09% | 100.07% | 100.07% |
| O2_ftree_partial_pre | 100.00% | 100.00% | 100.00%
| 100.00% | 100.01% | 99.98% | 100.00% | 100.00% | 100.01% |
100.09% | 100.11% | 100.11% |
| O2_ftree_loop_distribution | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.01% |
100.17% | 100.14% | 100.14% |
| O2_ftree_loop_distribute_patterns | 100.00% | 100.00% | 100.00%
| 100.00% | 100.08% | 100.00% | 100.00% | 100.09% | 100.13% |
100.16% | 100.18% | 100.18% |
| O2_fno_cse_follow_jumps | 100.00% | 100.00% | 100.00%
| 100.00% | 100.00% | 100.03% | 100.00% | 100.00% | 100.01% |
100.22% | 100.18% | 100.19% |
| O2_frounding_math | 100.00% | 100.00% | 100.00%
| 100.00% | 100.06% | 100.00% | 100.08% | 100.18% | 100.35% |
100.20% | 100.19% | 100.20% |
| O2_fno_gcse | 100.00% | 100.00% | 100.00%
| 100.00% | 99.68% | 100.03% | 100.00% | 100.01% | 100.21% |
100.31% | 100.22% | 100.22% |
| O2_fno_expensive_optimizations | 100.00% | 100.00% | 100.00%
| 100.00% | 100.35% | 99.92% | 99.68% | 99.80% | 99.43% |
100.50% | 100.30% | 100.31% |
| O2_fno_tree_vrp | 100.00% | 100.00% | 100.00%
| 100.00% | 100.05% | 99.58% | 100.23% | 100.03% | 100.01% |
100.35% | 100.36% | 100.36% |
| O2_fselective_scheduling2 | 100.00% | 100.00% | 100.00%
| 100.00% | 99.96% | 100.00% | 100.00% | 100.00% | 100.00% |
100.65% | 100.43% | 100.45% |
| O2_fnon_call_exceptions | 100.00% | 100.00% | 100.00%
| 100.00% | 100.44% | 243.68% | 100.20% | 100.13% | 100.14% |
100.32% | 100.48% | 100.48% |
| O2_funswitch_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 100.10% | 100.02% | 100.02% | 100.00% | 100.00% |
100.90% | 100.54% | 100.56% |
| O2_fpredictive_commoning | 100.00% | 100.00% | 100.00%
| 100.00% | 100.02% | 100.00% | 100.00% | 100.00% | 100.00% |
100.86% | 100.75% | 100.76% |
| O2_fno_peephole2 | 100.00% | 100.00% | 100.00%
| 100.00% | 99.63% | 100.18% | 100.00% | 100.00% | 100.00% |
101.30% | 100.81% | 100.83% |
| O2_fschedule_insns | 100.00% | 100.00% | 100.00%
| 100.00% | 100.15% | 100.04% | 100.00% | 100.00% | 100.00% |
101.30% | 100.85% | 100.89% |
| O2_fipa_cp_clone | 100.00% | 100.00% | 100.00%
| 100.00% | 100.95% | 100.99% | 100.11% | 101.04% | 100.43% |
101.20% | 100.92% | 100.93% |
| O2_fno_crossjumping | 100.00% | 100.00% | 100.00%
| 100.00% | 100.70% | 102.10% | 100.00% | 100.00% | 100.00% |
102.27% | 101.54% | 101.57% |
| O2_finline_functions | 100.00% | 100.00% | 100.00%
| 100.00% | 101.26% | 110.39% | 101.45% | 98.99% | 99.23% |
112.37% | 107.48% | 107.66% |
| O2_ftree_vectorize | 100.00% | 100.00% | 100.00%
| 100.00% | 95.46% | 99.88% | 109.78% | 100.66% | 103.50% |
113.02% | 110.14% | 110.35% |
| O2_ftree_loop_vectorize | 100.00% | 100.00% | 100.00%
| 100.00% | 95.44% | 99.88% | 109.03% | 100.79% | 103.65% |
113.10% | 110.32% | 110.54% |
| O2_ftrapv | 100.00% | 100.00% | 273.28%
| 135.45% | 109.41% | 99.89% | 99.98% | 101.18% | 101.87% |
115.00% | 114.61% | 111.24% |
| O2_ffloat_store | 100.00% | 100.00% | 100.00%
| 100.00% | 100.59% | 99.96% | 99.94% | 100.01% | 100.03% |
132.75% | 121.99% | 122.90% |
| Ofast | 100.00% | 100.00% | 100.00%
| 100.00% | 97.93% | 110.91% | 110.36% | 100.18% | 102.49% |
136.69% | 126.34% | 126.93% |
| O3 | 100.00% | 100.00% | 100.00%
| 100.00% | 98.42% | 110.91% | 110.51% | 100.21% | 102.53% |
136.98% | 126.50% | 127.10% |
| O2_funroll_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 101.22% | 103.10% | 100.00% | 100.01% | 100.04% |
148.33% | 132.25% | 133.23% |
| O2_funroll_all_loops | 100.00% | 100.00% | 100.00%
| 100.00% | 101.38% | 103.20% | 100.00% | 100.01% | 100.04% |
154.15% | 135.72% | 136.81% |