我需要压缩每个文本文件并复制到另一个服务器。文件大小可能在500MB到8 8GB之间。每个文件中都没有依赖项。我有35个Appx文件。
我的常规代码需要appx 3-4个小时。为了减少时间,我正在考虑为这个实现线程。你认为线程化可以减少时间吗,还是有其他最好的方法来做到这一点。
发布于 2012-10-02 03:24:14
.Net 4.0有一个新的Threading.Task命名空间,这使得调度任务变得更加容易,而不必深入到线程调度中。
它允许您将后续任务排入队列,以便在前一个任务完成后运行(无论成功还是失败)。
http://msdn.microsoft.com/en-us/library/system.threading.tasks.aspx
http://www.codethinked.com/net-40-and-systemthreadingtasks
但是,正如前面的评论者所建议的那样,如果瓶颈不是CPU进行文件压缩,而是网络传输,那么它可能没有太大帮助。
发布于 2012-10-02 03:28:18
我建议你使用Task.Factory.StartNew,因为在默认情况下,它会为每个内核创建一个线程,并让另一个线程排队。
发布于 2012-10-02 04:01:53
根据我处理大文件的经验,由于硬盘读/写本身和/或网络的限制,多线程并不能加快处理速度。
您不仅要对硬盘进行大量的读写操作,还需要通过网络将大文件复制到另一台计算机上。
如果您的平均文件大小是4.25 GB,那么我们要处理的存储空间就是148.75 GB(按35个文件计数)。这是一个很大的空间,你不仅要把所有的空间读到内存中(希望不是一次读完所有的空间,否则虚拟内存会开始发挥作用,它会把更多的空间写到你的硬盘上),你还会把其中的一些空间写回一个zip文件。
将这个因素添加到网络上的文件传输中,如果你的网络是我必须处理的典型网络,我对你得到的时间并不感到惊讶。兆比特和千兆比特的速度从来都不是他们所宣称的那样。
https://stackoverflow.com/questions/12679165
复制相似问题