On 4/16/06, Tomas Carnecky tom@dbservice.com wrote:
I know the overhead of an dispatch table is bigger than a simple 'if (trace) {}', but this few (load, compare == two?) additional instruction still is noticeable in certain applications.
The overhead of a dispatch table is *much* bigger - indirect jumps can't be branch predicted on older chips, whereas a simple if (trace) absolutely can be and modern hardware branch prediction engines are over 90% accurate.
The GL thunks already have tracing in, yet, nobody seems to be reporting higher framerates with tracing disabled. When things work properly in fact most people report similar framerates to Windows. And the GL thunks are one of the most performance sensitive regions of Wine there are.
So, I'll say it again - can somebody prove that Wine is faster without the tracing? I doubt it. And if there is a region where the debug channel test slows things down we can always add manual branch prediction hints or just take the trace out of that codepath.
thanks -mike