http://bugs.winehq.org/show_bug.cgi?id=16061
Summary: HEAP_FindSubHeap taking excessive CPU time Product: Wine Version: 1.1.5 Platform: Other OS/Version: other Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: jburgess777@googlemail.com
Created an attachment (id=17290) --> (http://bugs.winehq.org/attachment.cgi?id=17290) oprofile output and analysis
I'm a developer of a utility called osm2pgsql which parses the XML map data produced by the OpenStreetMap project. Normally this tool runs on Linux but I recently compiled a version for Windows using MinGW and ran it with Wine as a test. It ran, but was very slow.
The execution time for the application is about 90 seconds for the Linux native version vs 78 minutes with the Windows binary executing under Wine. A user has reported that it takes about 5 minutes to run natively on Windows but I do not know what hardware that was and have not measured it myself.
Running oprofile identified HEAP_FindSubHeap() as being responsible for over 75% of the CPU total usage. The application allocates memory for lots of small objects and strings so a large number of calls to malloc/free is to be expected, but not the slow performance.
This may ultimately be a duplicate of bug 9263 but I figured this may be an interesting data point for you. It looks like optimising the linear list search in HEAP_FindSubHeap may be a useful performance win for Wine.
I'll attach the oprofile output. If you are interested in this as a test case then I can probably produce a simplified standalone executable exhibiting the same behaviour.