[请教] c# 读大文件时候什么方式效率最高
例如(每个线程中的发送代码):
---------------------
maxChunkLength=1*1024
FileStream fs = new FileStream(@"d:\1.zip", FileMode.Open,FileAccess.Read,FileShare.Read);
int bytesRemaining=fs.Length;
BinaryReader reader = new BinaryReader(fs);
while (bytesRemaining>0)
{
int bytesToRead = (bytesRemaining < maxChunkLength) ? bytesRemaining : maxChunkLength;
byte[] bytes = new byte[bytesToRead];
int bytesRead = reader.Read(bytes, 0, bytesToRead);
... ...
//发送数据 或者写入文件
bytesRemaining -= bytesToRead;
}
... ...
-------------------
d:\1.zip文件假设为500M,500人同时读该文件,并用socket发送出去。(多线程形式)
在这种情况下,CPU占用为50%,内存占用为60MB,但是硬盘已经高速运转达到极限了。
不知道有什么好的方法提供效率。
不知道扩大maxChunkLength=1*1024 这个读取文件的数组的大小是否能改善状况。
(我想增加数组大小的话,就会减少读取文件所需要的次数,同时增加SOCKET的发送时间,就增加了每次读取之间的间隔时间)*^_^* 不知道这样想对不对
或者有其它方式可以更好的实现,请高手提些建议。
机器配置:P4 2.6X2/2G DDR/1G网卡/SCSI RAID0磁盘阵列(500GB)