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);
依然不好使
网友评论