Anders wrote:
We have been using TI code generation tools (compiler and linker) on Wine, and it has worked well. However, when we started evaluating newer versions of the codegen tools, the linking time was dramatically increased (from 20 sec to 30 minutes...).
We have done some profiling using oprofile, and found that most of this time (96%) is spent in the HEAP_FindFreeBlock* *function in the ntdll module. The time needed to locate a free heap block increases gradually, from a few iterations up to about 15000 in the project we are building.
Wow, that's worth looking into!
Can you write a small C program that has the same behavior? That would help us reproduce the problem and then solve it.
Thanks, Dan
For starters, here is some more debug info on our case.
oprofilres.txt shows the results we got from oprofile on ntdll.dll.so
heaptrace.tar.gz contains a WINEDEBUG=+heap trace (as recommended). It shows that the linker allocates many small blocks, typically 0x18 bytes. We interrupted the linking before it was complete, but you should see a pattern...
Regards, Anders
On Tue, 2005-02-22 at 22:32 -0800, Dan Kegel wrote:
Anders wrote:
We have been using TI code generation tools (compiler and linker) on Wine, and it has worked well. However, when we started evaluating newer versions of the codegen tools, the linking time was dramatically increased (from 20 sec to 30 minutes...).
We have done some profiling using oprofile, and found that most of this time (96%) is spent in the HEAP_FindFreeBlock* *function in the ntdll module. The time needed to locate a free heap block increases gradually, from a few iterations up to about 15000 in the project we are building.
Wow, that's worth looking into!
Can you write a small C program that has the same behavior? That would help us reproduce the problem and then solve it.
Thanks, Dan