xtensa: optimize find_removed_literal
authorMax Filippov <jcmvbkbc@gmail.com>
Sat, 4 Apr 2015 11:49:42 +0000 (14:49 +0300)
committerMax Filippov <jcmvbkbc@gmail.com>
Thu, 9 Apr 2015 16:10:25 +0000 (19:10 +0300)
commit3439c466273378021821473d3fc84990e089ae34
tree33b4a42582af2d5eafa0052d8192b6c91167c027
parent071aa5c98a31c966f5fbfc573fcee61350fd1936
xtensa: optimize find_removed_literal

find_removed_literal uses linear search to find removed literal by its
VMA. The list of literals is fixed at that point, build an ordered index
array and use binary search instead.

Original profile:

% time    self  children    called     name
-----------------------------------------
         56.72    0.00  297578/669392      translate_reloc
         70.86    0.00  371814/669392      relax_section
  67.9  127.58    0.00  669392         find_removed_literal
-----------------------------------------

Same data, after optimization:

% time    self  children    called     name
-----------------------------------------
          0.00    0.00  297578/669392      translate_reloc
          0.00    0.00  371814/669392      relax_section
   0.0    0.00    0.00  669392         find_removed_literal
          0.00    0.00   23838/23838       map_removed_literal
-----------------------------------------

2015-04-03  Max Filippov  <jcmvbkbc@gmail.com>
bfd/
* elf32-xtensa.c (removed_literal_map_entry): new typedef.
(removed_literal_map_entry_struct): new structure.
(removed_literal_list_struct): add new fields: n_map and map.
(map_removed_literal, removed_literal_compare): new functions.
(find_removed_literal): build index array for literals ordered
by VMA, use binary search to find removed literal.
bfd/elf32-xtensa.c
This page took 0.028945 seconds and 4 git commands to generate.