> On 2016-Jul-17, at 13:11, Eric Fiselier <e...@efcs.ca> wrote: > > Hi Duncan, > > It's possibly expected. It depends on what operation it's performing. I > expected a bit of a performance drop in some cases but I have a plan to fix > those. > Do you have a link to LNT?
LNT is documented here: http://llvm.org/docs/TestingGuide.html http://llvm.org/docs/lnt/ We have a public bot that submits results here: http://llvm.org/perf/ However I think Chris tracked this down using some regression bisection tools on our internal instance. I'm looking now to see if the public instance caught a regression on -O3 -flto: http://llvm.org/perf/db_default/v4/nts/machine/42 > > On Wed, Jul 13, 2016 at 6:41 PM, Duncan P. N. Exon Smith > <dexonsm...@apple.com> wrote: > Hmm. I implied there were other regressions, but I just finished scanning > them. Shootout-C++/hash2 is the only major one. The others were small, and > only at -O0. > > > On 2016-Jul-13, at 17:38, Duncan P. N. Exon Smith via cfe-commits > > <cfe-commits@lists.llvm.org> wrote: > > > > We saw mixed results from this on LNT, including some major regressions. > > For example, on x86_64, SingleSource/Benchmarks/Shootout-C++/hash2 > > regressed 18.5% at -O3 and over 20% at -Os. > > > > Is this expected? > > ^ Still interested in an answer, though ;). > > > > >> On 2016-Jul-11, at 15:02, Eric Fiselier via cfe-commits > >> <cfe-commits@lists.llvm.org> wrote: > >> > >> Author: ericwf > >> Date: Mon Jul 11 17:02:02 2016 > >> New Revision: 275114 > >> > >> URL: http://llvm.org/viewvc/llvm-project?rev=275114&view=rev > >> Log: > >> Don't compute modulus of hash if it is smaller than the bucket count. > >> > >> This cleans up a previous optimization attempt in hash, and results in > >> additional performance improvements over that previous attempt. > >> Additionally > >> this new optimization does not hinder the power of 2 bucket count > >> optimization. > >> > >> Modified: > >> libcxx/trunk/include/__hash_table > >> > >> Modified: libcxx/trunk/include/__hash_table > >> URL: > >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__hash_table?rev=275114&r1=275113&r2=275114&view=diff > >> ============================================================================== > >> --- libcxx/trunk/include/__hash_table (original) > >> +++ libcxx/trunk/include/__hash_table Mon Jul 11 17:02:02 2016 > >> @@ -90,7 +90,8 @@ inline _LIBCPP_INLINE_VISIBILITY > >> size_t > >> __constrain_hash(size_t __h, size_t __bc) > >> { > >> - return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : __h % __bc; > >> + return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : > >> + (__h < __bc ? __h : __h % __bc); > >> } > >> > >> inline _LIBCPP_INLINE_VISIBILITY > >> @@ -2201,8 +2202,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc> > >> if (__nd != nullptr) > >> { > >> for (__nd = __nd->__next_; __nd != nullptr && > >> - (__hash == __nd->__hash_ > >> - || __constrain_hash(__nd->__hash_, __bc) == __chash); > >> + __constrain_hash(__nd->__hash_, __bc) == __chash; > >> __nd = > >> __nd->__next_) > >> { > >> if ((__nd->__hash_ == __hash) && key_eq()(__nd->__value_, > >> __k)) > >> @@ -2231,8 +2231,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc> > >> if (__nd != nullptr) > >> { > >> for (__nd = __nd->__next_; __nd != nullptr && > >> - (__hash == __nd->__hash_ > >> - || __constrain_hash(__nd->__hash_, __bc) == __chash); > >> + __constrain_hash(__nd->__hash_, __bc) == __chash; > >> __nd = > >> __nd->__next_) > >> { > >> if ((__nd->__hash_ == __hash) && key_eq()(__nd->__value_, > >> __k)) > >> > >> > >> _______________________________________________ > >> cfe-commits mailing list > >> cfe-commits@lists.llvm.org > >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > > > _______________________________________________ > > cfe-commits mailing list > > cfe-commits@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits