同时对多个文件进行大量写操作对性能优化_Asp.Net开发技巧
时间:2010-09-16 来源:蔚蓝的大海
我自己的一个项目,需要同时对65536个文件进行多次写操作。
如果先全部打开所有的文件,然后重复写,最后关闭所有的文件。那么第一次写操作全部完成需要16分钟左右,而第二次就需要40分钟了。没有继续测试了。
for (int i = 0; i < 65536; i++)
{
fileStream[i] = new FileStream(buffDir+"\\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
write;
write;
write;
........
for (int i = 0; i < 65536; i++)
{
fileStream[i] .close();
}
如果在写操作的时候只打开相应的一个文件,写完关闭。那么所有写操作完成只要2分30秒左右。
循环
{
for (int i=0;i<65536;i++)
{
open;
write;
close;
}
}
由此可见,第二种办法性能要远大于第一种。一次打开所有的文件,需要占用不小的内存,最主要的是.net在处理filestream 的时候,可能要进行大量的内存分配和回收等工作,消耗了大量内存和资源。
另外我也做个测试,如果文件数目比较小,那么第一种的性能又要大大好于第二种。
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html
dazzle dvd recorder driversmini bluetooth usb adaptersata eide compatibilitythrough the wire videolaptop hard drive to ideservice tool companyasus a8n32 sli deluxe reviewbluetooth laptop headsetcox cable modem driversxbox 360 2addonics ide serial ata converternetwork setup disk downloadnetopia wireless lan card driver downloaddolby ac3 codec quicktimegame port cardsprint work homesurround sound setupreliance wireless broadband internetps3 wireless adaptercable do need connect pc tvipod stereo adapterwindows 7 wireless adapter compatibilitypci express x16 slotmlb network verizon fioscompact flash type i et iibuy usb mini mouseverizon express card 34eide sata adapterusb to firewire adapterhdmi rgb cableshome shopping network jewelrymini pci to pci adapteripod touch firewire chargerwinavi video capture freewaremini computer mousehow to transfer photo from mobile to computerseagate usb driverspowerwave memory card converterbattery cables connectorsbasic wiring lightincrease network signalnational geographic translatorwireless internet provider reviewshdmi splitter 1x2printer cable lengthcomcast connection testm audio delta 1010 salewireless display adapterbest graphics cards crysislg flatron wide monitor driver