小编Ace*_*ine的帖子

写入超过2.5GB后,性能会随着fput而下降.为什么?

目前我正在研究一个小程序,它读取大文件并对它们进行排序.经过一些基准测试后,我偶然发现了一个奇怪的性能问题.当输入文件变大时,输出文件的写入花费的时间比实际排序要长.所以我深入研究了代码并最终意识到fputs-function可能是问题所在.所以我写了这个小基准程序.

#include "stdio.h"
#include "ctime"

int main()
{
    int i;
    const int linecount = 50000000;
    //Test Line with 184 byte
    const char* dummyline = "THIS IS A LONG TEST LINE JUST TO SHOW THAT THE WRITER IS GUILTY OF GETTING SLOW AFTER A CERTAIN AMOUNT OF DATA THAT HAS BEEN WRITTEN. hkgjhkdsfjhgk jhksjdhfkjh skdjfhk jshdkfjhksjdhf\r\n";
    clock_t start = clock();
    clock_t last = start;

    FILE* fp1 = fopen("D:\\largeTestFile.txt", "w");
    for(i=0; i<linecount; i++){
        fputs(dummyline, fp1);
        if(i%100000==0){
            printf("%i Lines written.\r", i);
            if(i%1000000 == …
Run Code Online (Sandbox Code Playgroud)

c windows 64-bit file-io large-files

8
推荐指数
1
解决办法
635
查看次数

标签 统计

64-bit ×1

c ×1

file-io ×1

large-files ×1

windows ×1