parisc: unwind - optimise linked-list searches for modules
Having many dozens of modules, the searches down the linked list of sections would dominate the lookup time, dwarfing any savings from the binary search within the section. A simple move-to-front optimisation exploits the commonality of the code paths taken, and in simple real-world tests on other architectures reduced the number of steps in the search to barely more than 1. Signed-off-by: Phil Carmody <ext-phil.2.carmody@nokia.com> Signed-off-by: Kyle McMartin <kyle@redhat.com>
This commit is contained in:
parent
f720817700
commit
b1b1d4a6f2
|
@ -80,8 +80,11 @@ find_unwind_entry(unsigned long addr)
|
|||
if (addr >= table->start &&
|
||||
addr <= table->end)
|
||||
e = find_unwind_entry_in_table(table, addr);
|
||||
if (e)
|
||||
if (e) {
|
||||
/* Move-to-front to exploit common traces */
|
||||
list_move(&table->list, &unwind_tables);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return e;
|
||||
|
|
Loading…
Reference in New Issue