Richard Smith via llvm-dev
2017-May-04 18:20 UTC
[llvm-dev] [cfe-dev] Improvements to std::find and std::count
On 1 May 2017 9:15 am, "Craig Topper via cfe-dev" <cfe-dev at lists.llvm.org> wrote: Adding cfe-dev. Removing llvm-dev. Frontend and libary discussions are better represented on that list. True, but we might also want to consider whether llvm's loop idiom recognition pass should be able to catch this. ~Craig On Sat, Apr 29, 2017 at 7:13 AM, Daniel Cooke via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi, > > I recently posted a question on StackOverflow regarding the performance of > std::find and std::count when provided with char* input: > http://stackoverflow.com/questions/43483378/why-arent > -stdcount-and-stdfind-optimised-to-use-memchr. > > I would propose adding overloads of these functions for char* and const > char* inputs that delegate to memchr, something like: > > inline const char* find(const char* first, const char* const last, const > char value) > { > const auto result = std::memchr(first, value, last - first); > return result != nullptr ? static_cast<const char*>(result) : last; > } > > inline typename std::iterator_traits<const char*>::difference_type > count(const char* first, const char* const last, const char value) > { > typename std::iterator_traits<const char*>::difference_type result {0}; > while (first && first != last) { > if ((first = static_cast<const char*>(std::memchr(first, value, last - > first)))) { > ++result; > ++first; > } > } > return result; > } > > I’ve never contributed to LLVM, so I’m not sure how to proceed, if this is > a change that is likely to be accepted? > > Best, > Dan > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >_______________________________________________ cfe-dev mailing list cfe-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170504/8159d045/attachment.html>