当对象&目标DLL位于网络驱动器上:我专注于DLL创建,因为它需要400秒才能完成。
在本地驱动器上,创建DLL大约需要60秒。两个驱动器共享相同的特性,我们的网络非常快。
我已经尝试使用网络驱动器作为目标复制/创建大文件,并在写入大小足够大时获得了良好的结果。所以我用ProcessMonitor进行了调查,发现ld
使用了大量的2字节的WriteFile
调用,最大的一次写入大小约为200。
所以我猜CIFS对一系列未缓冲的小写的反应非常差,而本地驱动器并不关心。
我可以要求我的基于gcc编译器的供应商通过一些缓冲的fwrite
转换他的write
调用,但是我们在CIFS写缓存参数上缺少一些东西吗?
我的意思是:如果在CIFS端有这样一个缓存,更大的块将被写入,性能将接近文件复制/创建。有没有办法打印缓存大小/改变它?(很抱歉我问了个菜鸟CIFS的问题,但是我在谷歌上搜索了"SMB CIFS windows写缓存大小"之类的东西,只找到了Linux的东西。
如果可能的话,使用iSCSI你将有最好的质量性能之后你必须知道CIFS不是用来编译或者其他小文件的。
本地磁盘或SAN的解决方案效率更高
辩