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.

Thanks,
Martin
+--------------------------------------------+---------+-------------------+---------+---------+------------+---------+-----------+-------------+---------+---------+---------+
|                                            | .rodata | .gcc_except_table |   
.data |    .bss | .debug_str | .symtab | .eh_frame | .debug_info | .strtab |   
.text |    SIZE |
+--------------------------------------------+---------+-------------------+---------+---------+------------+---------+-----------+-------------+---------+---------+---------+
| Os                                         |  93.90% |            77.38% |  
98.93% |  97.85% |    109.82% |  99.97% |    94.50% |     125.83% | 100.75% |  
79.24% |  86.23% |
| O1                                         | 100.26% |            87.20% | 
100.00% | 100.01% |    100.00% |  99.52% |    93.15% |     100.00% |  99.21% |  
93.46% |  95.49% |
| O2_fbranch_probabilities                   | 100.00% |            97.87% | 
100.00% | 100.00% |    100.00% |  99.72% |    99.65% |     100.00% |  99.46% |  
98.25% |  98.71% |
| O2_fwrapv                                  | 100.00% |           100.02% | 
100.00% | 100.00% |    100.00% |  99.99% |    99.71% |     100.00% | 100.00% |  
98.61% |  98.90% |
| O2_fno_align_jumps                         | 100.00% |            99.97% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.99% |     100.00% | 100.00% |  
98.19% |  98.94% |
| O2_fno_align_functions                     | 100.00% |           100.02% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.99% |     100.00% | 100.00% |  
98.65% |  99.27% |
| O2_fno_tree_pre                            |  99.83% |           100.46% | 
100.00% | 100.00% |    100.00% |  99.58% |    99.66% |     100.00% |  99.88% |  
98.94% |  99.29% |
| O2_fno_align_loops                         | 100.00% |            99.98% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.96% |     100.00% | 100.00% |  
99.05% |  99.42% |
| O2_fipa_pta                                | 100.00% |            98.64% | 
100.00% | 100.00% |    100.00% |  99.96% |   100.39% |     100.00% |  99.99% |  
99.32% |  99.47% |
| O2_fno_caller_saves                        | 100.00% |           100.08% | 
100.00% | 100.00% |    100.00% | 100.01% |   100.10% |     100.00% | 100.00% |  
99.29% |  99.54% |
| O2_fno_inline_small_functions              | 100.01% |            99.41% | 
100.00% | 100.01% |    100.00% | 100.13% |   100.31% |     100.00% | 100.13% |  
99.23% |  99.66% |
| O2_fno_devirtualize_speculatively          | 100.00% |            98.24% | 
100.00% | 100.00% |    100.00% |  99.98% |    99.87% |     100.00% |  99.98% |  
99.50% |  99.73% |
| O2_fno_devirtualize                        | 100.00% |            98.26% | 
100.00% | 100.00% |    100.00% |  99.98% |    99.87% |     100.00% |  99.98% |  
99.50% |  99.73% |
| O2_ftree_slp_vectorize                     | 100.82% |           100.00% | 
100.00% | 100.00% |    100.00% |  99.87% |    99.07% |     100.00% |  99.88% |  
99.89% |  99.92% |
| O2_fira_loop_pressure                      | 100.00% |           100.02% | 
100.00% | 100.00% |    100.00% |  99.98% |    99.97% |     100.00% | 100.00% |  
99.90% |  99.97% |
| O2_fno_optimize_sibling_calls              | 100.00% |            99.99% | 
100.00% | 100.00% |    100.00% | 100.02% |    99.14% |     100.00% | 100.01% |  
99.99% |  99.98% |
| O2_fsignaling_nans                         |  99.56% |           100.02% | 
100.00% | 100.00% |    100.00% |  99.81% |   100.04% |     100.00% | 100.03% | 
100.00% |  99.98% |
| O2_fgcse_after_reload                      | 100.00% |           100.04% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.00% |     100.00% | 100.00% |  
99.98% |  99.98% |
| O2_fno_ipa_sra                             | 100.01% |            99.90% | 
100.00% | 100.00% |    100.00% |  99.98% |    99.97% |     100.00% |  99.81% |  
99.98% |  99.98% |
| O2_fno_reorder_blocks_and_partition        | 100.00% |            99.68% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.00% |     100.00% |  99.79% |  
99.99% |  99.99% |
| O2_fsched2_use_superblocks                 | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.01% |     100.00% | 100.00% |  
99.99% |  99.99% |
| O2_fdata_sections                          |  99.88% |           100.00% |  
99.73% |  99.63% |    100.00% | 100.00% |   100.00% |     100.00% | 100.00% | 
100.00% |  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% |
| 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% |
| O2_fgcse_sm                                | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.01% |     100.00% | 100.00% | 
100.00% | 100.00% |
| O2_fmodulo_sched                           | 100.00% |           100.02% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.99% |     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% |
| 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% |
| 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% |
| 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% |
| 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% |
| O2                                         | 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| O2_fvpt                                    | 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| 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% |
| O2_fno_optimize_strlen                     | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% |  99.98% |    99.99% |     100.00% |  99.99% | 
100.02% | 100.00% |
| O2_flive_range_shrinkage                   | 100.00% |            99.99% | 
100.00% | 100.00% |    100.00% |  99.99% |   100.00% |     100.00% | 100.00% |  
99.98% | 100.00% |
| O2_fno_ipa_cp                              | 100.00% |           100.03% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.02% |     100.00% |  99.88% | 
100.01% | 100.00% |
| O2_fno_isolate_erroneous_paths_dereference | 100.00% |           100.04% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.01% |     100.00% | 100.00% | 
100.01% | 100.01% |
| O2_fcx_fortran_rules                       | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.02% |   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.00% | 100.01% |   100.05% |     100.00% | 100.00% |  
99.99% | 100.01% |
| O2_fexceptions                             | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.10% |     100.00% | 100.00% | 
100.01% | 100.01% |
| O2_fmerge_all_constants                    | 100.85% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.10% |    99.94% |     100.00% | 100.15% |  
99.89% | 100.01% |
| O2_ftree_coalesce_inlined_vars             |  99.99% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.02% |     100.00% | 100.00% | 
100.02% | 100.01% |
| O2_funsafe_loop_optimizations              | 100.00% |            99.99% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.00% |     100.00% | 100.00% | 
100.03% | 100.02% |
| O2_fno_tree_switch_conversion              | 100.31% |           100.01% | 
100.00% | 100.00% |    100.00% |  99.97% |   100.01% |     100.00% |  99.97% | 
100.01% | 100.05% |
| O2_fconserve_stack                         | 100.00% |            99.16% | 
100.00% | 100.00% |    100.00% | 100.28% |   101.03% |     100.00% | 100.47% |  
99.93% | 100.05% |
| O2_fno_tree_tail_merge                     | 100.00% |           100.49% | 
100.00% | 100.00% |    100.00% |  99.99% |    99.95% |     100.00% | 100.00% | 
100.11% | 100.06% |
| O2_fno_rerun_cse_after_loop                | 100.00% |           100.03% | 
100.00% | 100.00% |    100.00% | 100.06% |   100.04% |     100.00% | 100.01% | 
100.09% | 100.07% |
| O2_ftree_partial_pre                       | 100.00% |            99.98% | 
100.00% | 100.00% |    100.00% | 100.01% |   100.01% |     100.00% | 100.00% | 
100.09% | 100.11% |
| O2_ftree_loop_distribution                 | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.01% |   100.00% |     100.00% | 100.00% | 
100.17% | 100.14% |
| O2_ftree_loop_distribute_patterns          | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.13% |   100.08% |     100.00% | 100.09% | 
100.16% | 100.18% |
| O2_fno_cse_follow_jumps                    | 100.00% |           100.03% | 
100.00% | 100.00% |    100.00% | 100.01% |   100.00% |     100.00% | 100.00% | 
100.22% | 100.18% |
| O2_frounding_math                          | 100.08% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.35% |   100.06% |     100.00% | 100.18% | 
100.20% | 100.19% |
| O2_fno_gcse                                | 100.00% |           100.03% | 
100.00% | 100.00% |    100.00% | 100.21% |    99.68% |     100.00% | 100.01% | 
100.31% | 100.22% |
| O2_fno_expensive_optimizations             |  99.68% |            99.92% | 
100.00% | 100.00% |    100.00% |  99.43% |   100.35% |     100.00% |  99.80% | 
100.50% | 100.30% |
| O2_fno_tree_vrp                            | 100.23% |            99.58% | 
100.00% | 100.00% |    100.00% | 100.01% |   100.05% |     100.00% | 100.03% | 
100.35% | 100.36% |
| O2_fselective_scheduling2                  | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.96% |     100.00% | 100.00% | 
100.65% | 100.43% |
| O2_fnon_call_exceptions                    | 100.20% |           243.68% | 
100.00% | 100.00% |    100.00% | 100.14% |   100.44% |     100.00% | 100.13% | 
100.32% | 100.48% |
| O2_funswitch_loops                         | 100.02% |           100.02% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.10% |     100.00% | 100.00% | 
100.90% | 100.54% |
| O2_fpredictive_commoning                   | 100.00% |           100.00% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.02% |     100.00% | 100.00% | 
100.86% | 100.75% |
| O2_fno_peephole2                           | 100.00% |           100.18% | 
100.00% | 100.00% |    100.00% | 100.00% |    99.63% |     100.00% | 100.00% | 
101.30% | 100.81% |
| O2_fschedule_insns                         | 100.00% |           100.04% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.15% |     100.00% | 100.00% | 
101.30% | 100.85% |
| O2_fipa_cp_clone                           | 100.11% |           100.99% | 
100.00% | 100.00% |    100.00% | 100.43% |   100.95% |     100.00% | 101.04% | 
101.20% | 100.92% |
| O2_fno_crossjumping                        | 100.00% |           102.10% | 
100.00% | 100.00% |    100.00% | 100.00% |   100.70% |     100.00% | 100.00% | 
102.27% | 101.54% |
| O2_finline_functions                       | 101.45% |           110.39% | 
100.00% | 100.00% |    100.00% |  99.23% |   101.26% |     100.00% |  98.99% | 
112.37% | 107.48% |
| O2_ftree_vectorize                         | 109.78% |            99.88% | 
100.00% | 100.00% |    100.00% | 103.50% |    95.46% |     100.00% | 100.66% | 
113.02% | 110.14% |
| O2_ftree_loop_vectorize                    | 109.03% |            99.88% | 
100.00% | 100.00% |    100.00% | 103.65% |    95.44% |     100.00% | 100.79% | 
113.10% | 110.32% |
| O2_ftrapv                                  |  99.98% |            99.89% | 
100.00% | 100.00% |    135.45% | 101.87% |   109.41% |     273.28% | 101.18% | 
115.00% | 114.61% |
| O2_ffloat_store                            |  99.94% |            99.96% | 
100.00% | 100.00% |    100.00% | 100.03% |   100.59% |     100.00% | 100.01% | 
132.75% | 121.99% |
| Ofast                                      | 110.36% |           110.91% | 
100.00% | 100.00% |    100.00% | 102.49% |    97.93% |     100.00% | 100.18% | 
136.69% | 126.34% |
| O3                                         | 110.51% |           110.91% | 
100.00% | 100.00% |    100.00% | 102.53% |    98.42% |     100.00% | 100.21% | 
136.98% | 126.50% |
| O2_funroll_loops                           | 100.00% |           103.10% | 
100.00% | 100.00% |    100.00% | 100.04% |   101.22% |     100.00% | 100.01% | 
148.33% | 132.25% |
| O2_funroll_all_loops                       | 100.00% |           103.20% | 
100.00% | 100.00% |    100.00% | 100.04% |   101.38% |     100.00% | 100.01% | 
154.15% | 135.72% |

Reply via email to