静态本地vs本地。哪一个在C或C ++中更快?

时间:2017-11-28 19:37:05

标签: c++ c

执行func并在多线程中重新输入。 如何将局部变量,a和len更改为静态局部变量? 每次输入时,func都会执行strlen。 Strlen足以在这个逻辑中执行一次。 我知道局部变量在相关帖子中更快。

void func() {
  char *a = "asddf......":
  int len = strlen(a);
}

1 个答案:

答案 0 :(得分:4)

你对方式过分担心细节问题。

例如,MSVC 2017编译器会转换此

#include <string.h>

int main() {
  char *a = "asddf......";
  auto len = strlen(a);

  return (int) len;
}

00007FF60D331000  mov         eax,0Bh  
00007FF60D331005  ret  

因此,字符串文字的strlen是编译时常量,即使首先分配给指针也是如此。