问题标签 [isolatedstoragefile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3023 浏览

c# - StorageFile 比 IsolatedStorageFile 慢 50 倍

当我发现在 Lumia 920 上运行的应用程序的 WP7 版本加载数据的速度是在同一设备上运行的 WP8 版本的 2 倍时,我只是在对多种算法进行基准测试以找到在我的应用程序中加载所有数据的最快方法。

然后,我编写了以下独立代码来测试 WP8 中的 StorageFile 和 WP7 中的 IsolatedStorageFile 的性能。

为了澄清标题,这是我做的初步基准测试结果,阅读了 50 个 20kb 和 100kb 的文件:

在此处输入图像描述

有关代码,请参见下文

更新

在今天做了几个小时的基准测试和一些有趣的结果之后,让我重新表述我的问题:

  1. 为什么await StreamReader.ReadToEndAsync()每个基准测试都比非异步方法慢StreamReader.ReadToEnd()?(这可能已经在 Neil Turner 的评论中得到了回答)

  2. 使用 StorageFile 打开文件时似乎有很大的开销,但仅限于在 UI 线程中打开文件时。(参见方法 1 和 3 或 5 和 6 之间的加载时间差异,其中 3 和 6 比等效的 UI 线程方法快大约 10 倍)

  3. 有没有其他方法可以更快地读取文件?

更新 3

好吧,现在有了这个更新,我又添加了 10 种算法,用以前使用的每个文件大小和使用的文件数量重新运行每个算法。这次每个算法运行 10 次。所以 excel 文件中的原始数据是这些运行的平均值。由于现在有 18 种算法,每种算法都测试了 4 种文件大小(1kb、20kb、100kb、1mb),分别针对 50、100 和 200 个文件(18*4*3 = 216),总共进行了 2160 次基准测试,总共耗时 95 分钟(原始运行时间)。

更新 5

添加了基准 25、26、27 和ReadStorageFile方法。不得不删除一些文本,因为该帖子有超过 30000 个字符,这显然是最大值。使用新数据、新结构、比较和新图表更新了 Excel 文件。

编码:

这些基准如何运行:

基准测试结果

这里是原始基准数据的链接:http: //www.dehodev.com/windowsphonebenchmarks.xlsx

现在是图表(每个图表显示通过每种方法加载 50 的数据,结果均以毫秒为单位)

1kb 文件大小基准

下一个 1mb 的基准测试并不能真正代表应用程序。我将它们包括在这里是为了更好地概述这些方法如何扩展。

在此处输入图像描述

综上所述:用于读取文件的标准方法 (1.) 始终是最差的(除非您想读取 50 个 10mb 文件,但即便如此,也有更好的方法)。


我还链接了这个:await AsyncMethod() 与 await await Task.Factory.StartNew<TResult>(AsyncMethod),其中有人认为通常添加新任务是没有用的。但是,我在这里看到的结果是您无法假设,并且应该始终检查添加任务是否可以提高性能。

最后:我想在官方的 Windows Phone 开发者论坛上发布此内容,但每次尝试时,我都会收到“意外错误”消息...

更新 2

结论:

查看数据后,您可以清楚地看到,无论文件大小如何,每个算法都与文件数量成线性关系。所以为了简化一切,我们可以忽略文件的数量(我们将在以后的比较中只使用 50 个文件的数据)。

现在谈谈文件大小:文件大小很重要。我们可以看到,当我们增加文件大小时,算法开始收敛。在 10MB 文件大小时,之前最慢的算法发生 4 个,共 8 个。但是,由于这个问题主要涉及手机,因此应用程序会读取包含这么多数据的多个文件非常罕见,对于大多数应用程序来说,即使是 1MB 文件也很少见。我的猜测是,即使读取 50 个 20kb 的文件也不常见。大多数应用程序可能正在读取 10 到 30 个文件范围内的数据,每个文件的大小为 0.5kb 到 3kb。(这只是一个猜测,但我认为它可能是准确的)

0 投票
1 回答
1294 浏览

c# - windows phone 7 隔离存储 - 不允许操作

所以我一直在做一个简单的游戏,我想实现一个高分系统。一旦播放器第一次加载主页,就会创建一个新的文本文件(“hsc.txt”)并插入一些假值,这些值稍后会被程序拆分,但是,目前我的代码会抛出 aSystem.IO.IsolatedStorage.IsolatedStorageException并且我似乎找不到问题。我查看了从消息框中得到的错误“ - operation not permitted”,但发布的所有解决方案似乎都不起作用。我已经尝试关闭流,但它似乎不起作用。

任何建议将不胜感激。

到目前为止,我已经:a)更改了 FileMode b)更改了 FileAccess 和一些我什至不记得的其他“快速修复”。

0 投票
2 回答
346 浏览

c# - Windows Phone 7 应用程序中的 IsolatedStorageException

我正在尝试读取未在应用程序中创建的文件。

这是我尝试过的示例:

我抛出一个“isolatedstorageexception”: 链接到异常

有人可以帮我阅读这个文件吗?

谢谢 !

0 投票
1 回答
213 浏览

silverlight - Windows Phone - 导航后 MediaElement 不再工作

我的 windows phone (8) 应用程序中的 MediaElement 有问题。在我导航到其他页面并返回包含 MediaElement 的页面之前,它工作正常。

我有以下代码来播放来自必应翻译 API 的流:

最大的问题是没有例外......“MediaElement.SetSource(isfs);” 正常调用,无一例外!

你知道会发生什么吗?

谢谢你的帮助!巴斯蒂安

0 投票
1 回答
219 浏览

xml - 添加新的 XElement 将整个 XML 添加到流中的现有 xml

我有一个现有的 XML 存储在 InternalFielStorage 中作为..

我正在尝试在“作者”节点下附加一个“标题”节点,但是在保存时,我看到一个完全新的 xml 添加到现有的 xml 作为..

我为此使用的代码..

问题:
1. 如何避免将新的 XML 附加到现有的 XML 中?
2. 如何使“title”标签位于<"Author name="Sam"> 标签下?

提前致谢。

0 投票
2 回答
332 浏览

c# - 适用于 Windows Phone 8 的 iOS 中类似 plist 的文件

我想知道是否有类似的解决方案可以将所有类型的数据保存到文件中,就像在 iOS 中使用 plist 文件完成的那样?

将数据加载到NSArray

[NSMutableArray arrayWithArray:[[NSArray alloc] initWithContentsOfFile:pathToFile]]

将数据写入文件

[NSArray writeToFile:destPath atomically:YES];

我知道有类似的东西[NSUserDefaults standardUserDefaults],它是IsolatedStorageSettings.ApplicationSettings

任何帮助将不胜感激。


解决了

在这个问题中,我举例说明了 1 Soonts 方法的使用。

0 投票
1 回答
305 浏览

c# - 如何从隔离存储中删除选定的项目?用户给出文件的名称

我可以将它保存在独立的存储中并检索它。但是怎么删除呢?

0 投票
1 回答
69 浏览

c# - IsolatedStorageFile.GetLastAccessTime 在 wp7 上崩溃

这听起来像“访问独立存储时发生错误”。但是没有这样的例外是msdn: http: //msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile.getlastaccesstime (v=vs.110).aspx

我想,这可能是因为我在 Task.Factory.StartNew() 中调用它。可以是一个理由吗?它在 wp8 上运行良好。

编辑:

问题是我使用GetLastAccessTime(cacheFileName).Millisecond;了正如 Agat 的链接所说,wp7 的毫秒数始终为 0。或者,实际上,它们甚至不可用,因为在尝试访问它们时抛出异常。所以不要使用毫秒,就是这样。

0 投票
1 回答
106 浏览

windows-phone - 将 WritableBitmap 保存到 IsolatedStorageFileStream

有没有一种简单的方法可以将变量 WriteableBitmap 的内容保存到 IsolatedStorageFile?我正在编写一个程序来处理 WriteableBitmap 中的像素,然后将处理后的位图保存为文件 *.bmp 并将其存储在“保存的图片”目录中。我有将 WriteableBitmap 保存为 jpeg 文件的代码,但正如我之前所说,我不想以任何方式压缩图形。请帮我解决我的问题。

0 投票
0 回答
65 浏览

windows-phone-7 - 奇怪而烦人的IsolatedStorageError

更新

我添加了通常会引发错误的代码/函数。

有人可以帮忙吗?

在开始之前,我已经花了 20 多个小时研究这个问题。

我正在开发一个 Windows 手机应用程序,并且不断收到很多独立存储异常,尤其是“独立存储文件流不支持操作”。

情景

我有一个具有ProfilePictureUrl作为属性的对象,每次创建该对象的实例时,我都会从 Web 下载配置文件图像,然后将该图像存储到独立存储中。

示例代码

抛出异常的代码

这是在LocalStorageManager类的DownloadImageToIsolatedStorage函数中。

这是管理我的 IsolatedStorage 存储的类

这是我的对象的类