На устройстве Windows Mobile имеет ли смысл кэшировать данные «в памяти»? - PullRequest
1 голос
/ 09 августа 2010

Я пишу приложение для Windows CE и хочу воспроизводить звук (короткий wav-файл), когда что-то происходит. Поскольку этот звук будет часто воспроизводиться, мой первый инстинкт был загрузить файл wav в поток памяти и использовать этот поток вместо того, чтобы каждый раз читать файл.

Но потом мне пришло в голову, что эти устройства Windows Mobile имеют только один вид памяти, который используется и для хранения данных (= файловой системы), а также для память программы; на панели управления есть даже приятный слайдер, который вы можете использовать для делегирования памяти для хранения или выполнения программы. Таким образом, теоретически чтение файла из файловой системы (или некоторого значения из базы данных SQL Server CE) должно (почти) занять то же время, что и чтение этого значения из некоторого объекта в памяти, верно?

Правильно ли это предположение (т. Е. Кэширование в памяти на уровне приложений здесь не имеет смысла) или я что-то упустил? Для простоты предположим, что используется только внутренняя память устройства (без карты памяти).

Ответы [ 2 ]

1 голос
/ 23 августа 2010

Когда я хочу воспроизвести короткий WAV-файл в Windows Mobile (например, звук уведомления).Я обычно добавляю его в качестве ресурса в мой исполняемый файл.AFAIK ресурсы загружаются в оперативную память, поскольку они являются частью исполняемого образа.Затем вы можете легко вызвать PlaySound () с флагом SND_RESOURCE (и, возможно, ИЛИ с SND_ASYNC, чтобы вызов не блокировался во время воспроизведения файла).

1 голос
/ 10 августа 2010

Предположение может или не может быть действительным. Где в хранилище он находится? Если это постоянное хранилище (например, папка карты памяти или что-то еще, что остается при перезагрузке), то оно поддерживается Flash, что намного медленнее, чем ОЗУ, и будет разница в загрузке, хотя, как сильно Ваше приложение я не могу сказать - только тестирование скажет вам об этом.

...