Language agnostic 在Windows Mobile设备上,缓存数据有意义吗;在内存中;?

Language agnostic 在Windows Mobile设备上,缓存数据有意义吗;在内存中;?,language-agnostic,memory,windows-mobile,caching,mobile,Language Agnostic,Memory,Windows Mobile,Caching,Mobile,我正在编写一个WindowsCE应用程序,我想在发生某些事情时播放声音(一个短wav文件)。由于这种声音会经常播放,我的第一反应是将wav文件加载到内存流中并重用该流,而不是每次都读取该文件 但我突然想到,这些Windows Mobile设备只有一种内存,既用于数据存储(=文件系统),也用于程序内存;控制面板中甚至有一个很好的滑块,您可以使用它将内存委托给存储或程序执行。因此,从理论上讲,从文件系统读取文件(或从SQLServerCE数据库读取某个值)所需的时间应该(几乎)与从某个内存对象读取该

我正在编写一个WindowsCE应用程序,我想在发生某些事情时播放声音(一个短wav文件)。由于这种声音会经常播放,我的第一反应是将wav文件加载到内存流中并重用该流,而不是每次都读取该文件

但我突然想到,这些Windows Mobile设备只有一种内存,既用于数据存储(=文件系统),也用于程序内存;控制面板中甚至有一个很好的滑块,您可以使用它将内存委托给存储或程序执行。因此,从理论上讲,从文件系统读取文件(或从SQLServerCE数据库读取某个值)所需的时间应该(几乎)与从某个内存对象读取该值所需的时间相同,对吗


这个假设正确吗(即,应用程序级的内存缓存在这里没有意义),还是我遗漏了什么?为简单起见,我们假设仅使用设备的内部存储器(无存储卡)。

该假设可能有效,也可能无效。它位于存储中的什么位置?如果是持久性存储(如存储卡文件夹或硬重置时保留的任何其他内容),那么它由闪存支持,这比RAM慢很多,负载性能也会有所不同,虽然这可能会对你的应用程序产生多大影响,但我不能说——只有测试才能告诉你。

当我想在Windows Mobile上播放一个短WAV文件时(例如通知声音)。我通常将其作为资源添加到可执行文件中。AFAIK资源被加载到RAM中,因为它们是可执行映像的一部分。然后,您可以方便地使用SND_资源(可能也可以使用SND_ASYNC)标记调用(),以便在播放文件时不会阻塞调用