代码之家  ›  专栏  ›  技术社区  ›  Michael Kelley Franci Penov

将文件保存到网络

  •  1
  • Michael Kelley Franci Penov  · 技术社区  · 15 年前

    我有一个大约7MB的文件,可以在几秒钟内保存到本地共享。但是,将该文件保存到网络位置需要 分钟 . 我在想我能做些什么来加快速度。以下是我目前的选择:

    1. 将数据保存到本地计算机上的临时文件,然后将临时文件复制到网络路径 . 我可能会这么做,因为这是最简单和最划算的。
    2. 使用 SetFilePointerEx() SetEndOfFile() . 基于对这个问题的回答,我认为这可能是有用的: Creating big file on Windows
    3. 缓冲区写入 . 我可以自己缓存写的数据,并在缓冲区满时刷新,但这与操作系统已经完成的缓存难道不是多余的吗?

    #1似乎是最好的选择,但我想知道是否有人有任何建议,以更好的方式加快节省到网络路径?

    编辑: 网络在千兆局域网上,所以速度应该不是问题。将文件复制到网络路径大约需要1秒。我刚刚注意到,我们可能应该对较小的数据块调用writefile(),因此优化较高级别的代码以编写较大的数据块可能会有所帮助,但速度差异仍然非常显著,仍然是一个值得问的问题。

    3 回复  |  直到 15 年前
        1
  •  1
  •   ChrisW    15 年前

    我想知道是否有人对加快网络路径储蓄的更好方法有什么建议?

    也许你需要一个更好的人际网络。ISP通常提供快速下载,但上传速度慢。使用ftp等协议传输7mb需要多长时间?

        2
  •  1
  •   MSalters    15 年前

    您需要提供读修改写操作。您通常希望写至少4KB的块,可能更高的2次方。原因是要追加一个字节,通常需要读取文件的最后一个块,追加一个字节,然后写回新的块。通过写入4KB块(仅限),每次写入通常在文件末尾作为新块结束。

    缓存应该能帮到你,但缓存并不完美。以独占方式打开文件可能会有帮助。如果拒绝读取访问,操作系统可能会注意到刷新缓存对其他应用程序来说并不太重要。

    copyfile可以很快,因为它可以做完全相同的事情。

        3
  •  0
  •   Aaron M    15 年前

    你是在慢速网络上运行吗?

    id使用选项1并将文件保存到后台的网络共享