用ofstream 历次写多少M 是最快的,有人试过吗

用ofstream 每次写多少M 是最快的,有人试过吗
本帖最后由 zaq5275764 于 2014-03-10 21:50:41 编辑
如题,在单线程中,用ofstream打开一个文件,每次用write方法写文件,每次写多少是最适合的,求指导。
ofstream file("abc.rar");
file.write(szBuffer, ?);
------解决方案--------------------
ofstream自带有自己的缓冲区,不管你写多少都是在它的缓冲区满了以后才写入文件,因此你每次写多少对效率几乎没有影响;如果需要提高效率,可以自定义缓冲区,一般缓冲区定得大些输入效率会比较高。但也存在占用内存较多,数据写入的即时性受影响的问题
------解决方案--------------------
抛开ofstream自身缓冲,linux下4KB/32KB写入是最快的。
------解决方案--------------------
引用:
如题,在单线程中,用ofstream打开一个文件,每次用write方法写文件,每次写多少是最适合的,求指导。
ofstream file("abc.rar");
file.write(szBuffer, ?);


这种东西是没有定数的,即使在同一平台,也会随当前平台运行状况的不同而不同,这类问题最好还是交给操作系统自己去平衡。
------解决方案--------------------
引用:
抛开ofstream自身缓冲,linux下4KB/32KB写入是最快的。

PAGESIZE = 4k
------解决方案--------------------
在文件大小相同的前提下:
 读刚读过的文件比头次读没读过的文件快
 读转速快的硬盘上的文件比读转速慢的硬盘上的文件快
 读没有磁盘碎片的文件比读有磁盘碎片的文件快
 读文件不处理比边读边处理快
 单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)
 读固态硬盘上的文件比读普通硬盘上的文件快
写文件也类似。