You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言printf在Windows终端运行极慢的原因及优化方法

Windows下MinGW64编译的printf输出性能为何远低于WSL2?

以下是测试用的简单C程序:

#include <stdio.h>

int main(int, char**) {
    for (int i = 0; i < 500000; i++){
        printf("Test %d\n", i);
    }
}

测试结果差异

  • WSL2环境下使用GCC编译运行,耗时1.187855秒
  • Windows环境下使用MinGW64编译运行,耗时高达84.222000秒

已测试Windows下4款终端/控制台,耗时无显著差异:

  • Powershell 5
  • Powershell 7
  • Terminal
  • CMD

另外测试了无输出仅计算的代码,两个环境运行速度一致,确认问题出在printf函数本身。

3-4倍的性能差尚可接受,但近80倍的差距过于离谱,是否有被忽略的关键点?


更新:通过手动设置缓冲区优化性能

根据建议,手动设置stdout缓冲区后性能得到明显提升,修改后的代码如下:

#include <stdio.h>

int main(int, char**) {
    char buf[65536];
    setvbuf(stdout, buf, _IOFBF, 65536);
    for (int i = 0; i < 500000; i++){
        printf("Test %d\n", i);
    }
}

优化后程序耗时缩短至5.569000秒,仍比WSL2慢5倍,但已能满足需求。

内容的提问来源于stack exchange,提问作者SimpleJack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:10:02