如何计算上传大文件的最佳块大小

Fix*_*xer 12 c# asp.net silverlight wcf chunking

是否存在处理大文件的最佳块大小?我有一个上传服务(WCF),用于接受几百兆字节的文件上传.

我已经尝试了4KB,8KB到1MB的块大小.较大的块大小有利于提高性能(更快的处理速度),但却以内存为代价.

那么,有没有办法在上传文件时计算出最佳的块大小.如何进行这样的计算呢?它是可用内存和客户端,CPU和网络带宽的组合,它决定了最佳尺寸吗?

干杯

编辑:可能应该提到客户端应用程序将处于silverlight状态.

Ste*_*edd 7

如果您担心资源不足,那么最佳可能最好通过根据系统的可用内存评估您的peek上传并发性来确定.一次进行多少次同步上传将是您可能进行的任何计算中的关键变量.您所要做的就是确保您有足够的内存来处理上载并发,而这实现起来相当简单.内存很便宜,在您达到并发性会超出内存可用性的程度之前,您可能会耗尽网络带宽.

在性能方面,这不是那种在应用程序设计和开发过程中可以真正优化的东西.您必须拥有系统,用户才能真实地上传文件,然后您可以监控实际的运行时性能.

尝试与网络的TCP/IP窗口大小匹配的块大小.这就像你在设计时真正需要的那样最佳.

  • 哦! 使用客户端机器,它更简单.并发几乎不存在.只要你在获得它们之后没有将这些位保留在内存中,你几乎可以使用你想要的任何块大小.任何现代客户端,甚至是手机,都有足够的CPU和内存来处理几个文件,只要您在获取每个块后将这些位流存储到存储中.我怀疑你会发现基于块大小的应用程序级别的性能有任何显着差异.我将使用1024KB的大文件,并称它为一天. (3认同)
  • 好吧,我更多地指的是客户端机器(我们没有任何控制权)。如果我将块大小设置为 1MB,它将耗尽客户端计算机上的所有内存。但是,如果我将其设置为低,则需要很长时间来处理。 (2认同)