不定义任何变量, 求字符串长度
这是我的实现. 并写了一个定义变量的.各执行N次, 输出结果是, 没有定义变量的比定义变量的快....
- nt strlen(char* str)
- {
- if (*(str) != '/0')
- return strlen(++str) + 1;
- else
- return 0;
- }
- int strlen2(char* str)
- {
- int i = 0;
- while (*(str++) != '/0')
- i++;
- return i;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int start = GetTickCount();
- char* a = "aksjdlaaaccC";
- for (int i = 0; i < 10000000; i+=1)
- {
- strlen(a);
- }
- int end = GetTickCount();
- cout<<end - start<<endl;
- start = GetTickCount();
- for (int i = 0; i < 10000000; i+=1)
- {
- strlen2(a);
- }
- end = GetTickCount();
- cout<<end - start<<endl;
- return 0;
- }
结果输出:
4527
1091
我试着把strlen2改成
- int strlen2(char* str)
- {
- int i = 0;
- while (*(str++) != '/0')
- i++;
- return i;
- }
4506
1062
本以为改了以后, 结果会有所改变, 因为我是操作指针而不是传入索引值. 原本我以为传入索引值会比操作指针慢, 但看来错了.
难道是i++??