用ofstream 历次写多少M 是最快的,有人试过吗
用ofstream 每次写多少M 是最快的,有人试过吗
如题,在单线程中,用ofstream打开一个文件,每次用write方法写文件,每次写多少是最适合的,求指导。
ofstream file("abc.rar");
file.write(szBuffer, ?);
------解决方案--------------------
ofstream自带有自己的缓冲区,不管你写多少都是在它的缓冲区满了以后才写入文件,因此你每次写多少对效率几乎没有影响;如果需要提高效率,可以自定义缓冲区,一般缓冲区定得大些输入效率会比较高。但也存在占用内存较多,数据写入的即时性受影响的问题
------解决方案--------------------
抛开ofstream自身缓冲,linux下4KB/32KB写入是最快的。
------解决方案--------------------
这种东西是没有定数的,即使在同一平台,也会随当前平台运行状况的不同而不同,这类问题最好还是交给操作系统自己去平衡。
------解决方案--------------------
PAGESIZE = 4k
------解决方案--------------------
在文件大小相同的前提下:
读刚读过的文件比头次读没读过的文件快
读转速快的硬盘上的文件比读转速慢的硬盘上的文件快
读没有磁盘碎片的文件比读有磁盘碎片的文件快
读文件不处理比边读边处理快
单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)
读固态硬盘上的文件比读普通硬盘上的文件快
写文件也类似。
如题,在单线程中,用ofstream打开一个文件,每次用write方法写文件,每次写多少是最适合的,求指导。
ofstream file("abc.rar");
file.write(szBuffer, ?);
------解决方案--------------------
ofstream自带有自己的缓冲区,不管你写多少都是在它的缓冲区满了以后才写入文件,因此你每次写多少对效率几乎没有影响;如果需要提高效率,可以自定义缓冲区,一般缓冲区定得大些输入效率会比较高。但也存在占用内存较多,数据写入的即时性受影响的问题
------解决方案--------------------
抛开ofstream自身缓冲,linux下4KB/32KB写入是最快的。
------解决方案--------------------
这种东西是没有定数的,即使在同一平台,也会随当前平台运行状况的不同而不同,这类问题最好还是交给操作系统自己去平衡。
------解决方案--------------------
PAGESIZE = 4k
------解决方案--------------------
在文件大小相同的前提下:
读刚读过的文件比头次读没读过的文件快
读转速快的硬盘上的文件比读转速慢的硬盘上的文件快
读没有磁盘碎片的文件比读有磁盘碎片的文件快
读文件不处理比边读边处理快
单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)
读固态硬盘上的文件比读普通硬盘上的文件快
写文件也类似。