2010-08-09 12 views
1

Windows CE 응용 프로그램을 작성 중이며 문제가 발생하면 사운드 (짧은 wav 파일)를 재생하려고합니다. 이 사운드는 자주 재생 될 것이므로 첫 번째 본능은 wav 파일을 메모리 스트림에로드하고 매번 파일을 읽는 대신 해당 스트림을 다시 사용하는 것입니다.Windows Mobile 장치에서 "메모리에"데이터를 캐시하는 것이 합리적입니까?

그러나 이들 윈도우 모바일 장치는 데이터 저장 (= 파일 시스템)뿐만 아니라 프로그램 메모리에 대한 모두 사용되는 메모리 하나 종류를 가지고 나에게 발생; 심지어는 저장 장치 나 프로그램 실행에 메모리를 위임하는 데 사용할 수있는 멋진 슬라이더가 제어판에 있습니다. 따라서 이론적으로 파일 시스템 (또는 SQL Server CE 데이터베이스의 일부 값)에서 파일을 읽으려면 일부 메모리 개체에서이 값을 읽는 것과 거의 같은 시간이 걸립니다. 맞습니까?

이 가정은 맞습니까 (예 : 응용 프로그램 수준의 메모리 내 캐싱이 여기에 적합하지 않습니다) 또는 뭔가 놓쳤습니까? 간단히하기 위해 장치의 내부 메모리 만 사용한다고 가정합니다 (메모리 카드 없음).

답변

1

가정은 유효하거나 유효하지 않을 수 있습니다. 저장소에있는 위치는 어디입니까? 영구 저장소 (예 : 저장소 카드 폴더 또는 하드 리셋 할 때 남아있는 다른 항목)의 경우 Flash에 의해 백업됩니다. 이는 RAM보다 속도가 느리고 영향을 줄 수는 있지만로드 성능에 차이가 생깁니다 귀하의 애플 리케이션은 말할 수 없다 - 오직 테스트가 당신에게 말할 것이다.

1

Windows Mobile에서 짧은 WAV 파일 (예 : 알림 음)을 재생하고 싶습니다. 보통 실행 파일에 리소스로 추가합니다. AFAIK 리소스는 실행 가능 이미지의 일부이므로 RAM에로드됩니다. 그런 다음 편리하게 PlaySound()을 SND_RESOURCE (또는 SND_ASYNC와 함께 사용하면 호출이 파일 재생 중 차단되지 않음) 플래그로 호출 할 수 있습니다.

관련 문제