本次测试采用 25万条 csv 格式的地铁信息字符串数据进行处理,我们需要找到其中的一个关键位置的时间并提取。
前提声明:
- Python str、C++ char[] 、C++ string采用同样的算法编写实现
- 采用同样的数据进行处理
- 避免 i n c l u d e include include 或 i m p o r t import import 不必要的文件产生干扰
- 避免 s t r l e n ( ) strlen() strlen() 这种 O ( n ) O(n) O(n) 效率的函数干扰
- 没有关闭 c i n cin cin 的保护机制,减少对效率的影响
测试结果:
- C++ char[]:00:06.37(7秒)
- C++ char[] (使用strlen()):00:08.99(9秒)
- C++ string:01:29.73(1分30秒)
- Python str:02:46.80(2分47秒)
结论:
- 都说String慢,没想到这么慢!不过还好有更优秀的Python兄弟作陪衬
- 对处理效率苛刻的情况下,能用char[]处理尽量采用char[]
- 事实证明,类、对象、迭代器效率堪忧
测试代码:
- 注意:微软标准中的 gets_s() 在其他运行环境里应表示成 gets() 。
- C++ char[]
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long int
#define INF 0x3f3f3f3f
const int maxn = 1e5 + 10;
int vis[25];
int main()
{
freopen("F:/R_train_pre/Metro_train/record_2019-01-16.csv", "r", stdin);
//freopen("C:/Users/76485/Desktop/testcsv1.txt", "r", stdin);
memset(vis, 0, sizeof vis);
char str[200];
gets_s(str);
while (gets_s(str))