存盘接口
Windows写入文件有两种形式缓冲和非缓冲
http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx
缓冲模式是Windows自动分配缓冲区将数据分割到硬盘的每个簇大小以便写入,而非缓冲模式是有我们程序员进行缓冲区 的分配,可以任意指定大小。(这个任意并不是绝对的,必须要是硬盘簇的整数倍)
XP系统默认的缓冲区应该不是很大,在Copy文件时效率比Windows7要低一些,而在我们操作巨型的文件时至少要4MB以上的缓冲区才能发挥出最大效能。
如下图所示,block size越大数据流盘速度就相对越快,读盘反而是缓冲区较小时效率较高。不过这张图使用的是RAMDISK,数据只能供参考,使用硬盘时可以再行测试。
在LabVIEW 2009里面支持非缓冲格式流盘的有TDMS,BINARY和Win32APIVIs三种
![image](https://aftv2q.bay.livefilestore.com/y1m4CV566wf7PJgi97WlOxgGH0Wo06tB9RxB7f_jJOr7OXVIePxxEWGB_1CTjM1sMQ-1TF7lxUUg7HOMqixnY_6dmjJASUsBc3AcILPmT_T6wrsnNMQmbcPL2zwdp9vechREimzqj5lR8v7ApbXeOu09Q/image[5] 0B448D74.png “image”)
LabVIEW 2009 TDMS
Lab VIEW 2009 Binary
Win32API
这三种接口效率如何我们用RAMDISK分配一个内存盘以测试API本身的性能。
结果: TDMS 153.2MB/s LabVIEW2009 Bin 497MB/s Win32APIVIs 515.9MB/s
分析 因为三种API流盘的目标都是内存,数据量也相等,所以性能的差别应该是API本身造成的,观察CPU占用也可以看到TDMS最高,LabVIEW2009 bin和Win32基本持平,可见写入函数过于复杂也会影响存盘效率。