Review Request: faster kmd5

Jaime Torres Amate jtamate at gmail.com
Mon Aug 1 18:22:31 BST 2011



> On July 31, 2011, 5:52 p.m., Rolf Eike Beer wrote:
> > kdecore/text/kcodecs.cpp, line 941
> > <http://git.reviewboard.kde.org/r/102165/diff/1/?file=30480#file30480line941>
> >
> >     Please remove this register keyword. In best case the compiler moves this value into a register where he had placed it anyway. But usually you force a value into a register that the compiler could use for something better.

The register keyword is the key of the patch.
Without it, the times are almost the same as without the patch (little less probably because of the removal of memset).

The totals for transform are: 91,13% without the patch and 61,97% with it (only 4/3 times faster), and 85,19% without register.

g++ is not yet smart enough.


- Jaime Torres


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/102165/#review5284
-----------------------------------------------------------


On July 31, 2011, 5:28 p.m., Jaime Torres Amate wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/102165/
> -----------------------------------------------------------
> 
> (Updated July 31, 2011, 5:28 p.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Summary
> -------
> 
> I think the private methods can be changed without chaning the binary interface..
> In that case, I've changed some kmd5 methods to make them const, and pass const numbers.
> Also, in the transform method I've added register to the a,b,c,d variables, changing the FF, GG, HH ad II to return qint32 (hopefully in a register also).
> 
> In any case, the memset at the end of transform can be avoided. 
> There is also a little change to not declare and inicialize and never use a variable in quotedprintable.
> 
> 
> Diffs
> -----
> 
>   kdecore/text/kcodecs.h 023a129 
>   kdecore/text/kcodecs.cpp ce0e48d 
> 
> Diff: http://git.reviewboard.kde.org/r/102165/diff
> 
> 
> Testing
> -------
> 
> Running kphotoalbum maintenance|Recalculate checksum, that makes extensive use of kmd5, under callgrind, it shows that the new version is faster.
> At least in an AMD64.
> In the old way, FF, GG, HH and II calls in the transform method took 1,10%; 1,07%; 1,00%; 1,03%  +0,33% passing parameters
> In the new way, FF, GG, HH and II calls in the transform method take 0,83%; 0,80%; 0,76%; 0,78%  +0,21% passing parameters
> 
> I've tried also the kmd5benchmarktest, but I do not understand very well the results (or if they are as accurate as callgrind).
> 
> 
> Thanks,
> 
> Jaime Torres
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20110801/666e8fc9/attachment.htm>


More information about the kde-core-devel mailing list