[llvm-dev] [cfe-dev] Improvements to std::find and std::count

Richard Smith via llvm-dev llvm-dev at lists.llvm.org
Thu May 4 11:20:51 PDT 2017


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>


More information about the llvm-dev mailing list