Ge van Geldorp schrieb:
This works very nice, but I'm running into one
problem on my 300MHz test
machine: conversion of the EIPs to function name by the background thread
takes about 60 sec. Almost all of that time is spent looking up the correct
.stabs entry from the info in the .sym file. This is done using a linear
search. Since there can be 100000 .stabs entries in a .sym file, going
through these for each of the 3000 measurements can mean 300000000 compares.
Even worse, two passes are made through the .stabs list for each
measurement, one to find the function name and one to find the file name. No
wonder this takes 60 sec.
Sometimes ago there has exist a profiling function which has used the
hash table functions from ex\hashtable.c. The problem is that the hash
table functions uses the splay tree functions which are broken. In my
local sources I had replaced the splay tree by a simple double linked
list. I've never see such speed problems. This was at the begining of
2003. I had used the profiling for compiling ros on ros.
I would like it if we can add the sym files as a no-load section to each
binary. This protects from using wrong symbol files and does help for
some binaries like packet.sys and packet.dll.
- Hartmut