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