我正在编写一个应用程序,使用HttpWebRequest将大文件上传到Web服务。此应用程序将由不同网速的各种人运行。
我使用回调函数循环异步读取文件块,并将这些块异步写入请求流中,直到整个文件都被发送。
上传速度在写操作之间计算,并更新GUI以显示该速度。
我的问题是决定缓冲区大小。如果我设置得太大,网速慢的用户将看不到上传速度的频繁更新。如果我设置得太小,网速快的用户将“猛击”读/写方法,导致CPU使用率飙升。
现在我开始缓冲区时使用128kb,每写10次后检查这些10次写的平均写入速度,如果低于1秒,则增加128kb的缓冲区大小。如果写入速度低于5秒,我也会类似地减小缓冲区。
这种做法效果相当不错,但感觉非常随意,还有改进的空间。我的问题是,是否有人遇到过类似情况,采取了什么行动?
谢谢
我使用回调函数循环异步读取文件块,并将这些块异步写入请求流中,直到整个文件都被发送。
上传速度在写操作之间计算,并更新GUI以显示该速度。
我的问题是决定缓冲区大小。如果我设置得太大,网速慢的用户将看不到上传速度的频繁更新。如果我设置得太小,网速快的用户将“猛击”读/写方法,导致CPU使用率飙升。
现在我开始缓冲区时使用128kb,每写10次后检查这些10次写的平均写入速度,如果低于1秒,则增加128kb的缓冲区大小。如果写入速度低于5秒,我也会类似地减小缓冲区。
这种做法效果相当不错,但感觉非常随意,还有改进的空间。我的问题是,是否有人遇到过类似情况,采取了什么行动?
谢谢