结论:
C风格要快10倍左右。
代码:
#include "stdafx.h"
#include <string>
#include <time.h>
#include <iostream>
#include <assert.h>
using namespace std;
string str = "123456789";
int f()
{
return str.find("678");
}
char buf[32];
int f2(const char *p = "678")
{
for (int i = 0; i < 32; ++i)
{
int j = i;
int k = 0;
while (buf[j] == p[k])
{
++j;
k++;
}
if (buf[j] == 0)
{
return -1;
}
if (p[k] == 0)
{
return i;
}
}
return -1;
}
int main()
{
int num = 1000000;
strcpy(buf, "123456789");
cout << clock() << endl;
for (int i = 0; i < num; ++i)
{
f();
f();
f();
f();
f();
f();
f();
f();
f();
f();
}
cout << clock() << endl;
for (int i = 0; i < num; ++i)
{
f2();
f2();
f2();
f2();
f2();
f2();
f2();
f2();
f2();
f2();
}
cout << clock() << endl;
cout << f() << endl;
cout << f2() << endl;
bool b = (-1 == std::string::npos);
cout << b << endl;
string i;
cin >> i;
return 0;
}
输出结果:
67
2098
2410
5
5
1