shlwapi: optimise path functions

Andrew de Quincey adq_dvb at lidskialf.net
Mon Dec 1 03:26:20 CST 2003


On Sunday 30 November 2003 01:23, Dimitrie O. Paun wrote:
> On November 29, 2003 06:27 pm, Andrew de Quincey wrote:
> > I've replaced the calls to CharNextA()/CharNextW() with array increments
> > and a local static function. This knocks 3.5 seconds off the file open
> > dialogue in IDA.
>
> Well, I'm not sure this is worth doing. First off, we're not fixing any
> app that makes use of CharNext{A,W}(). 

Er, it does. Datarescue IDA Pro. I regard the save box taking > 10 seconds to 
open as a bug. (Note: This fix only fixes 3.5 seconds of the problem. more 
work is needed)

> Second, why is your static method 
> any faster than the real CharNextA()? Third, it's not correct to replace
> CharNextW() with an array increment. While it is true that currently our
> CharNextW() simply does the same thing, it should be fixed in the long
> run to properly deal with Unicode Surrogate Pairs:
>
>     http://uk.geocities.com/BabelStone1357/Unicode/surrogates.html
>
> In other words, I don't think the patch is acceptable. What I'd suggest:
>   -- figure out why the real CharNextA() is slow, and try to fix that
>   -- figure out why it takes so long to call CharNextW()

Its actually just the CharNextW function. The CharNextA thing I admit was 
premature optimisation that I have not tested and should be removed.

As to why it takes so long to call CharNextW. Why indeed? Its a function 
defined in a DLL external to the shlwapi one. As  there doesn't appear to be 
any funky code going on, it must be going through the normal WINE layers for 
calling such a function, surely?



More information about the wine-devel mailing list