Windows phone 7 如何加快windows phone 7上的解压缩操作?
当我在WindowsPhone7上解压一个包含5000个文件的zip文件时。完成它花了5分钟多。 代码如下:Windows phone 7 如何加快windows phone 7上的解压缩操作?,windows-phone-7,zip,unzip,Windows Phone 7,Zip,Unzip,当我在WindowsPhone7上解压一个包含5000个文件的zip文件时。完成它花了5分钟多。 代码如下: using (StreamReader httpwebStreamReader = new StreamReader(ea.Result)) { //open isolated storage to save files using (IsolatedStorageFile isoStore = Is
using (StreamReader httpwebStreamReader = new StreamReader(ea.Result))
{
//open isolated storage to save files
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
using (ZipInputStream s = new ZipInputStream(httpwebStreamReader.BaseStream))
{
//s.Password = "123456";//if archive is encrypted
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
// create directory
if (directoryName.Length > 0)
{
isoStore.CreateDirectory(directoryName);
}
if (fileName != String.Empty)
{
//save file to isolated storage
using (BinaryWriter streamWriter =
new BinaryWriter(new IsolatedStorageFileStream(theEntry.Name,
FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write, isoStore)))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
}
}
为什么这么慢?
如何加快解压操作?
有人知道吗?我认为您需要增加缓冲区大小。换行
int size = 2048;
byte[] data = new byte[2048];
并将2048
更改为类似于32768
(32*1024)的值
2KB的块大小会对闪存进行大量的单独写入。根据我的经验,这是一件有点慢的事情,可能会因设备而异。32KB的块大小应该可以减少16倍,但我不知道这是否会直接导致16倍的加速。我很想听到回音。我认为您需要增加缓冲区大小。换行
int size = 2048;
byte[] data = new byte[2048];
并将2048
更改为类似于32768
(32*1024)的值
2KB的块大小会对闪存进行大量的单独写入。根据我的经验,这是一件有点慢的事情,可能会因设备而异。32KB的块大小应该可以减少16倍,但我不知道这是否会直接导致16倍的加速。我很想听到回音。多线程处理在这方面起作用吗?这是在模拟器中还是在设备上?两者之间的时间比较如何?我的诺基亚800上的时间超过5分钟,但在模拟器上只有20秒!多线程处理在这方面起作用吗?这是在模拟器中还是在设备上?两者之间的时间比较如何?我的诺基亚800上的时间超过5分钟,但在模拟器上只有20秒!谢谢你的回答。我把尺码改为32768,需要3分钟。我认为zip文件有很多小文件,比如2KB,3KB。这就是问题所在吗?即使它是zip文件中的一个大文件,像您使用的2KB的小缓冲区大小也会降低速度。接下来要尝试的是在循环中读取数据,但不要将其写入磁盘。然后您可以看到瓶颈是在处理zip文件,还是在将文件写入磁盘。我猜将文件写入磁盘是最慢的部分,在这种情况下,zip中有许多文件会使您的速度更慢。让我知道考试进展如何。谢谢你的建议。我将文件流更改为内存流。但它似乎不起作用…因此我将解压操作更改为另一个线程,它似乎很好,但有时主线程会冻结…如何处理解压线程?@@谢谢您的回答。我将大小更改为32768,需要3分钟。我认为zip文件有很多小文件,比如2KB,3KB。这就是问题所在吗?即使它是zip文件中的一个大文件,像您使用的2KB的小缓冲区大小也会降低速度。接下来要尝试的是在循环中读取数据,但不要将其写入磁盘。然后您可以看到瓶颈是在处理zip文件,还是在将文件写入磁盘。我猜将文件写入磁盘是最慢的部分,在这种情况下,zip中有许多文件会使您的速度更慢。让我知道考试进展如何。谢谢你的建议。我将文件流更改为内存流。但它似乎不起作用…因此我将解压操作更改为另一个线程,它似乎很好,但有时主线程会冻结…如何处理解压线程?@@