美文网首页
命令行数据执行优化

命令行数据执行优化

作者: that_is_this | 来源:发表于2019-04-16 15:33 被阅读0次

    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);
    

    依然不好使

    相关文章

      网友评论

          本文标题:命令行数据执行优化

          本文链接:https://www.haomeiwen.com/subject/nvybwqtx.html