http://bugs.winehq.org/show_bug.cgi?id=14168
--- Comment #14 from Dan Kegel dank@kegel.com 2009-11-30 06:38:57 --- Later on (again with the patch and the big hash tables), it shifts a bit to join: overall: 159900 47.4177 msi.dll.so 155819 46.2075 libwine.so.1.0 12045 3.5719 kernel32.dll.so 5004 1.4839 no-vmlinux libwine: 129631 83.1933 strlenW 20582 13.2089 compare_unicode_weights 2599 1.6680 wine_compare_string 2306 1.4799 real_length msi: 50151 31.3640 JOIN_fetch_int 26740 16.7230 WHERE_evaluate 23498 14.6954 read_table_int 16140 10.0938 TABLE_fetch_int 9908 6.1964 STRING_evaluate 9245 5.7817 bytes_per_column 6989 4.3709 msi_string_lookup_id
=>0 read_table_int+0x2c(data=0x5994b10, row=0, col=6, bytes=3) [dlls/msi/table.c:951] in msi 1 TABLE_fetch_int+0x258(view=0x5960598, row=0, col=3, val=0x169d0d4) [dlls/msi/table.c:1150] in msi 2 JOIN_fetch_int+0x170(view=0x5960478, row=0, col=3, val=0x169d0d4) [dlls/msi/join.c:84] in msi 3 STRING_evaluate+0x67(wv=0x5960ab8, row=29303732, expr=0x5960870, record=(nil)) [dlls/msi/where.c:275] in msi 4 STRCMP_Evaluate+0x29(wv=0x5960ab8, row=29303732, cond=0x5960918, val=0x169d198, record=(nil)) [dlls/msi/where.c:299] in msi 5 WHERE_evaluate+0x271(wv=0x5960ab8, row=29303732, cond=0x5960918, val=0x169d198, record=(nil)) [dlls/msi/where.c:362] in msi
Somebody could probably spend a merry day chasing a bunch of little optimizations.