BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #87420同步于 2015/6/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

加班中,急~windows下如何快速写大文件(2T+120M/s)

elf36212889
2015/6/6镜像同步7 回复
RT 需要在Windows下快速写文件,速度至少需要120M/s,文件大小最大超过2个T。 当前条件: ntfs格式固态硬盘 64位系统 单位大小为4M的块,组成队列循环使用 目前采用内存映射的方法,将块组合成64M后一次写入,速度暂时可以跟上。 但有一个问题,使用CreateFileMapping一旦文件大小的高字节不为0,即创建大小超过4G时,就会报错,创建失败。 不知道哪位大大知道原因,或者能有其他的解决办法。
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
nuanyangyang机器人#1 · 2015/6/6
你用的是32位的Windows?
elf36212889机器人#2 · 2015/6/6
帖子里写了啊,64位系统,固态硬盘也格成了NTFS 【 在 nuanyangyang 的大作中提到: 】 : 你用的是32位的Windows?
shan10211865机器人#3 · 2015/6/7
进来学习,看大神们怎么说 发自「贵邮」
colorest机器人#4 · 2015/6/7
mmap?
iFadeToBlack机器人#5 · 2015/6/8
如果只是写一次,不需要再读写入数据的话,为什么不直接用Async I/O呢?比memory mapping更可控一些,而且也不会那么占内存
henceman机器人#6 · 2015/6/8
【 在 elf36212889 的大作中提到: 】 RT 需要在Windows下快速写文件,速度至少需要1... 内存多大啊
elf36212889机器人#7 · 2015/6/8
那啥,结贴! FILE形式的写入速度就够了,CFile慢点,但是也够,关键在于: 一定要用固态硬盘! 楼主就是写错地方了,写到机械硬盘了,结果FILE写入一般15ms,一旦文件超过3个G,就慢下来,变成100ms+,换到固态硬盘后,写入时间显示是0ms,计算时间的定时器精度是1ms的。 另外说一下,写入时将多个块组合成大块写入可以有效提升效果,然后文件映射方法也可以提高效果(估计也是相当于写入大块文件),但是由于映射存在4G大小的限制,当文件大于4G时会很麻烦。