命令行数据执行优化

2019-04-16  本文已影响0人  that_is_this

1. 表述

C 用 popen 函数执行命令行,并会返回一个 FILE* 指针,在用 fgets 函数逐行读取的数据的时候,会有约 20ms 的延迟;仅当第一次 fgets 的时候会有此现象;

如果优化掉这一点,就会有约 150ms 的优化~ 极具诱惑力~~

2. 该怎么优化呢

char line[1024] = {0};
FILE* fp = popen(cmd, "r");
if (fp != NULL) {
  LOG(balala start);
  fgets(line, 1024, fp);
  LOG(balala %s line);
}

替换成 fread 来读取好使会增加到 25ms

fseek(rFD, 0L, SEEK_END);
int size = ftell(rFD);
char* buffer = (char*)du_malloc(size + 1);
fread(buffer, size, 1, rFD);

依然不好使

上一篇下一篇

猜你喜欢

热点阅读