结论:strcmp比string快成百上千倍。
代码:
#include <string>
#include <time.h>
#include <iostream>
using namespace std;
string str = "SA203";
string str2 = "SA203";
char c_str[32] = "SA203";
char c_str2[32] = "SA206";
int f()
{
return strcmp(c_str, c_str2) == 0;
}
int f2()
{
return str == str2;
}
int f3()
{
return 1;
}
int main()
{
int num = 10000000;
int begin = clock();
for (int i = 0; i < num; ++i)
{
f();
}
cout << "strcmp耗时:" << clock() - begin << endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
f2();
}
cout << "string耗时" << clock() - begin << endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
f3();
}
cout << "空函数耗时" << clock() - begin << endl;
string i;
cin >> i;
return 0;
}
输出结果:
strcmp耗时:138
string耗时1234
空函数耗时168
测试代码2:
#include <string>
#include <time.h>
#include <iostream>
using namespace std;
string str = "SA203";
string str2 = "SA203";
char c_str[32] = "SA203";
char c_str2[32] = "SA206";
int main()
{
int num = 10000000;
int begin = clock();
for (int i = 0; i < num; ++i)
{
strcmp(c_str, c_str2) == 0;
}
cout << "strcmp耗时: " << clock() - begin << endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
strcmp(str.c_str(), str2.c_str()) == 0;
}
cout << "string strcmp耗时: " << clock() - begin << endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
str == str2;
}
cout << "string耗时: " << clock() - begin << endl;
begin = clock();
for (int i = 0; i < num; ++i)
{
}
cout << "空循环耗时: " << clock() - begin << endl;
string i; cin >> i;
return 0;
}
输出结果2:
strcmp耗时: 32
string strcmp耗时: 619
string耗时: 1085
空循环耗时: 17