私はかなり基本的なコードをいくつか持っています。コードはZIPファイルからファイルを抽出し、ZIPのファイル内容をXMLからオブジェクトにデシリアライズし、そのオブジェクトで何かを行います。コードはプロダクションサーバではるかに遅く動作します
ジップファイルは約90 MBです。この問題は、このコードがローカルマシン上で約3秒間(抽出するのに1.5秒、すべてのファイルを非直列化するのに約1.3秒)実行しますが、WindowsサーバーとIIS 6.1にコードを公開すると約28秒かかります同じファイルで同じアクションを実行します。抽出するには14秒、デシリアライズするには13秒。
サーバはVPS、8コア、16GB RAMです。
誰にもアイデアはありますか?
public List<FileNameStream> UnzipFilesTest(List<string> files, string zippedPathAndFile)
{
//var result = new Dictionary<string, MemoryStream>();
var unzipedFiles = new List<FileNameStream>();
string file1 = System.Web.Hosting.HostingEnvironment.MapPath(zippedPathAndFile);
if (File.Exists(file1))
{
using (MemoryStream data = new MemoryStream())
{
using (Ionic.Zip.ZipFile zipFile = Ionic.Zip.ZipFile.Read(file1))
{
zipFile.ParallelDeflateThreshold = -1;
foreach (ZipEntry e in zipFile)
{
if (files.Contains(e.FileName, StringComparer.OrdinalIgnoreCase))
{
e.Extract(data);
unzipedFiles.Add(new FileNameStream() { FileContent = Encoding.UTF8.GetString(fs..ToArray()), FileName = e.FileName }); //(e.FileName, data);
}
}
}
}
}
return unzipedFiles;
}
おそらくハードドライブの問題は、SSDとHDD? –
90mbファイルとそれほど違いはありますか? BtwローカルマシンにSSDがありません – Robert
zipファイルはサーバー上にありますか、またはネットワーク経由でアクセスされていますか? –