小编Enr*_*Fan的帖子

为什么strcmp比我的功能快得多?

我写了一个函数,Str::Compare基本上是strcmp用另一种方式重写的.在比较这两个函数时,在循环中重复500'000'000次,strcmp执行速度太快,大约快x750倍.

此代码在C库中编译,-Os参数为active:

int Str::Compare(char* String_1, char* String_2)
{
    char TempChar_1, TempChar_2;

   do
   {
        TempChar_1 = *String_1++;
        TempChar_2 = *String_2++;
   } while(TempChar_1 && TempChar_1 == TempChar_2);

   return TempChar_1 - TempChar_2;
}
Run Code Online (Sandbox Code Playgroud)

该函数的执行时间3.058s,而strcmp0.004s.

为什么会这样?

这也是我实现基准测试循环的方式:

int main()
{
     char Xx[] = {"huehuehuehuehuehuehuehuehuehuehuehuehuehue"},
          Yy[] = {"huehuehuehuehuehuehuehuehuehuehuehuehuehue"};
     for(int i = 0; i < 500000000; ++i)
         Str::Compare(Xx, Yy);
}
Run Code Online (Sandbox Code Playgroud)

编辑:测试我编写的一些代码和优化,提高了Str::Compare速度.如果之前strcmpx750倍,现在只有x250.这是新代码: …

c++ performance time strcmp

20
推荐指数
2
解决办法
5249
查看次数

标签 统计

c++ ×1

performance ×1

strcmp ×1

time ×1