[Bug libstdc++/66416] New: Regression: string::find 3.5 times slower than memrchr
neleai at seznam dot cz
gcc-bugzilla@gcc.gnu.org
Thu Jun 4 08:17:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66416
Bug ID: 66416
Summary: Regression: string::find 3.5 times slower than memrchr
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: neleai at seznam dot cz
Target Milestone: ---
Same problem as with strstr also applies here. As we know length we could
compare that to memrchr. Again instead simply calling that an implementation is
3.5 times slower on my sandy_bridge.
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;
int
main()
{
int i;
char s[10000];
for (i = 0; i < 10000; i++)
s[i] = ((unsigned) rand() % 128) + 1;
s[9999] = 0;
int sum = 0;
std::string foo = s;
std::string bar;
char *needle = strdup("needle");
for (i = 0; i < 5000000; i++)
{
needle[0] = ((unsigned) rand() % 128) + 1;
#ifdef MEMRCHR
sum += (long) memrchr(s, needle[0],9999);
#else
sum += foo.find_last_of(needle[0]);
#endif
}
return sum;
}
More information about the Gcc-bugs
mailing list