25

我是使用Windows应用商店应用程序编程的新手C#,我正在尝试了解如何处理图像内存。我的应用程序非常简单:

1) 它使用对象从文件中引用位图Windows.UI.Xaml.Media.Imaging.BitmapImage,然后将其用作Windows.UI.Xaml.Controls.Image对象的源。在我的情况下,磁盘上的图像比屏幕上显示的尺寸更大,因此它正在被系统缩放。

我的问题是WinRT如何处理图像的内存?我使用了该vmmap工具,我在 Mapped File 部分看到我的图像文件有一个条目。我猜这意味着该文件的原始字节已完全加载到内存中。由于这是 JPG,因此必须将这些字节解码为像素字节。从我的测试看来,设置 BitmapImage 的 UriSource 实际上并不会导致任何处理发生,因为它需要 0 毫秒,而是进行了一些延迟加载。

所以问题是:哪个对象是未压缩的未缩放像素数据的主导者?什么对象是在屏幕上绘制的缩放像素数据的主导者?是否有工具可以轻松地向我展示这一点?在 Java 世界中,我使用 Eclipse 内存分析器工具。我尝试使用 PerfView,但结果对我来说毫无意义,似乎该工具用于分析性能。

更新

在 BUILD 会议上,团队讨论了Windows Performance Toolkit. 我从来没有听说过有人提到 PerfView,所以我相信 WPT 是分析内存和性能的最新最好的工具,这里有一个链接:

http://msdn.microsoft.com/en-us/performance/cc825801.aspx

4

1 回答 1

1

一个简短的答案很可能是“最佳”。不是一个聪明人,那里有很多不同的系统。提到硬件加速,您还可以考虑内核数量、显示内存、磁盘速度、监视器位深度和分辨率,不胜枚举。

于 2013-11-28T21:57:31.460 回答