On 07/15/2014 09:50 AM, Andrew Pinski wrote:
On Tue, Jul 15, 2014 at 12:45 AM, Martin Liška <[email protected]> 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% |
