Tag: isolatedstoragefile

StorageFile比IsolatedStorageFile慢50倍

当我发现在我的Lumia 920上运行的应用程序的WP7版本加载数据的速度是在同一设备上运行的WP8版本的2倍时,我只是对多个算法进行基准测试以找到加载我应用程序中所有数据的最快方法。 我编写了以下独立代码来测试WP8的StorageFile和WP7的IsolatedStorageFile的性能。 为了澄清标题,这里是我做的初步基准测试结果,读取50个20kb和100kb的文件: 有关代码,请参阅下文 更新 在做了几个小时的基准测试和一些有趣的结果之后,让我重新解释一下我的问题: 为什么await StreamReader.ReadToEndAsync()在每个基准测试中都比非异步方法StreamReader.ReadToEnd()更慢? (这可能已经在Neil Turner的评论中得到了回答) 使用StorageFile打开文件时似乎有很大的开销,但只有在UI线程中打开它时才会出现。 (请参阅方法1和3之间或5到6之间的加载时间的差异,其中3和6比等效的UI线程方法快10倍) 有没有其他方法来读取可能更快的文件? 更新3 好吧,现在有了这个更新我添加了10个算法,重新使用每个以前使用的文件大小和使用的文件数量的每个算法。 这次每个算法运行10次。 因此,excel文件中的原始数据是这些运行的平均值。 由于现在有18种算法,每种算法都有4种文件大小(1kb,20kb,100kb,1mb),每种文件分别为50,100和200个文件(18 * 4 * 3 = 216),总共有2160个基准测试运行,总时间为95分钟(原始运行时间)。 更新5 添加了基准测试25,26,27和ReadStorageFile方法。 不得不删除一些文本,因为post有超过30000个字符,这显然是最大的。 使用新数据,新结构,比较和新图表更新了Excel文件。 代码: public async Task b1LoadDataStorageFileAsync() { StorageFolder data = await ApplicationData.Current.LocalFolder.GetFolderAsync(“benchmarks”); data = await data.GetFolderAsync(“samplefiles”); //b1 for (int i = 0; i < filepaths.Count; i++) { […]