[Bug symtab/8367] [RFA] performance improvement of lookup_partial_symtab

Jerome Guitton
2009-01-14T17:46:23Z

[-- Attachment #1: Type: text/plain, Size: 1081 bytes --]

The move to bugzilla has "resurrected" this patch; I suggested it
several years ago, but it's still relevant.

The problem is explained in details in the comment (very useful when I
had to double-check that the patch was not obsolete, actually). To
summarize it: lookup_partial_symtab is particularly slow when it has
been given an absolute path. The reason is that it needs to build the
full filename for every psymtab; when building this full filename, the
corresponding file is opened/closed by find_and_open_source. As a
consequence, in the worst case, the loop ends up opening/closing
every source file of the application. Pretty bad for a big application,
in particular if the sources are located on a slow file system.

The idea of the patch is to avoid building the psymtab full filename
if the basenames are different.

Tested on linux, no regression.

OK to apply?

2009-01-14 Jerome Guitton <guitton@adacore.com>

* symtab.c (lookup_partial_symtab): When looking up an absolute path
in the partial symtabs, compare the base names before checking the
full names.

[-- Attachment #2: lookup_partial_symtab.dif --]
[-- Type: video/dv, Size: 2457 bytes --]