ntdll: Heap implementation has a performance bottleneck

Michael Kaufmann hallo at michael-kaufmann.ch
Tue Jul 18 16:21:09 CDT 2006


Hi,

I have discovered that Wine's heap implementation (HeapAlloc(), 
HeapFree(), etc. in dlls/ntdll/heap.c) is very slow if many small memory 
blocks are allocated and freed. Somebody has reported this before: 
http://www.winehq.org/pipermail/wine-devel/2005-February/034095.html

HomeSite's syntax checker needs 120 seconds to load on Wine because of 
Wine's poor heap implementation. Most users will think that the program 
has crashed. I have created a trace of HomeSite's memory requests and a 
program to replay them. For details and performance measurements, please 
look at bug 5709 ( http://bugs.winehq.org/show_bug.cgi?id=5709 ).

According to the source code, Wine's heap implementation is described in 
the book "Windows 95 System Programming Secrets". This implementation is 
inefficient: KB225099 ( http://support.microsoft.com/kb/225099/en-us ) 
says that the heap implementation of Windows NT 4.0 SP4 and 2000 is much 
better than the heap implementation of Windows 95.

Does anybody know some details about the heap implementation of Windows 
NT/2000/XP ?

Regards,
Michael



More information about the wine-devel mailing list