Review Request 124539: Optimize KDevHash for integral types.

Milian Wolff mail at milianw.de
Sat Aug 1 12:54:25 UTC 2015



> On July 31, 2015, 6:50 a.m., Olivier Jean de Gaalon wrote:
> > Typically it's considered "good form" (by people who write things of such beauty), to use SFINAE:
> > 
> >     template<bool B>
> >     using KDevHashType = typename std::enable_if<B, KDevHash&>::type;
> > 
> >     template<typename Integer>
> >     KDevHashType<std::is_integral<Integer>::value> operator<<(Integer value) { ... }
> > 
> >     template<typename T>
> >     KDevHashType<!std::is_integral<T>::value> operator<<(T value) { ... }
> > 
> > This would also make it simpler to add additional type overloads in the future.
> > 
> > But I'd also understand if you just want to ignore the guy responsible for the mess that is TUDUChain :).

I actually tried it, but couldn't make it work. Your code above looks good, I'll take that :)

thanks!


- Milian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/124539/#review83211
-----------------------------------------------------------


On July 30, 2015, 10:04 p.m., Milian Wolff wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/124539/
> -----------------------------------------------------------
> 
> (Updated July 30, 2015, 10:04 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Repository: kdevplatform
> 
> 
> Description
> -------
> 
> Optimize KDevHash for integral types.
> 
> For integral types, we now reuse qHash internally and only
> fall back to the O(sizeof(T)) implementation for other
> types.
> 
> Before:
> 
> ********* Start testing of TestKDevHash *********
> Config: Using QtTest library 5.5.0, Qt 5.5.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.1.0)
> PASS   : TestKDevHash::initTestCase()
> PASS   : TestKDevHash::benchHash_int()
> RESULT : TestKDevHash::benchHash_int():
>      0.075 msecs per iteration (total: 77, iterations: 1024)
> PASS   : TestKDevHash::benchHash_uint()
> RESULT : TestKDevHash::benchHash_uint():
>      0.075 msecs per iteration (total: 77, iterations: 1024)
> PASS   : TestKDevHash::benchHash_quint64()
> RESULT : TestKDevHash::benchHash_quint64():
>      0.15 msecs per iteration (total: 77, iterations: 512)
> PASS   : TestKDevHash::benchHash_bool()
> RESULT : TestKDevHash::benchHash_bool():
>      0.018 msecs per iteration (total: 77, iterations: 4096)
> PASS   : TestKDevHash::cleanupTestCase()
> Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
> ********* Finished testing of TestKDevHash *********
> 
> After:
> 
> ********* Start testing of TestKDevHash *********
> Config: Using QtTest library 5.5.0, Qt 5.5.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.1.0)
> PASS   : TestKDevHash::initTestCase()
> PASS   : TestKDevHash::benchHash_int()
> RESULT : TestKDevHash::benchHash_int():
>      0.024 msecs per iteration (total: 51, iterations: 2048)
> PASS   : TestKDevHash::benchHash_uint()
> RESULT : TestKDevHash::benchHash_uint():
>      0.024 msecs per iteration (total: 51, iterations: 2048)
> PASS   : TestKDevHash::benchHash_quint64()
> RESULT : TestKDevHash::benchHash_quint64():
>      0.026 msecs per iteration (total: 54, iterations: 2048)
> PASS   : TestKDevHash::benchHash_bool()
> RESULT : TestKDevHash::benchHash_bool():
>      0.022 msecs per iteration (total: 92, iterations: 4096)
> PASS   : TestKDevHash::cleanupTestCase()
> Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
> ********* Finished testing of TestKDevHash *********
> 
> 
> Diffs
> -----
> 
>   language/CMakeLists.txt 2c2b0285b68d209e07af185c43dcf157507f5a54 
>   language/util/kdevhash.h 40c32935aec9c7e5552769e780c033e96cf63166 
>   language/util/tests/CMakeLists.txt PRE-CREATION 
>   language/util/tests/test_kdevhash.cpp PRE-CREATION 
>   plugins/projectfilter/projectfilter.h 014e5a1eabbb3a2d9e71baeee3e38643cb8649e7 
> 
> Diff: https://git.reviewboard.kde.org/r/124539/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Milian Wolff
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20150801/2ef8189b/attachment.html>


More information about the KDevelop-devel mailing list