2012-03-02 6 views
2

파일 IO 성능은

내가 장치에 삽입 처음 후에 SD 카드에서 일부 미디어 파일을 읽으려고, 읽기 성능이 두 번째보다 훨씬 더 나쁘다는 모두, 누구는이 있는가 이 현상에 대한 아이디어와 어떻게이 문제를 피할 수 있습니까? 나는 열어 보았습니다.하지만 결과는 같습니다. SD 카드를 삽입 할 때마다 읽기 성능을 동일하게 유지하십시오.

답변

1

파일을 열 때 O_DIRECT (open(2) 참조)을 사용하면 버퍼 캐시를 건너 뜁니다. 이것은 종종 좋은 생각은 아니지만, 실행간에 일관성이 있기를 기대합니다.

O_DIRECT을 사용하려면 메모리가 SC_PAGESIZE이되도록 정렬하고 SC_PAGESIZE의 배수 인 블록으로 읽어야합니다.

+0

:(이 플래그를 시도했지만 작동 할 수 있지만 성능은 안드로이드 장치에서 ... 심지어 어쨌든 감사합니다 – thisEric

+0

하지만 –

+0

안녕하세요, 브라이언, 나는 당신의 요점을 알 수 없었습니다. 실제로 O_DIRECT가 성능을 향상시킬 수 있다는 것을 의미합니까?하지만 장치에서 시도했는데, 그럴 수 없습니다. 무엇이 문제입니까? – thisEric

1

당신 은요? 장치를 제거하기 전에 후속 읽기보다 처음 읽는 것이 더 나쁩니다. 그렇다면 이것은 정상적인 현상입니다. 이는 버퍼링 때문입니다. 기본적으로 시스템은 시스템 RAM을 사용하여 장치의 인식 속도를 높입니다.

카드를 마운트 해제 한 후 카드를 꺼낸 다음 다시 넣고 다시 마운트하면 첫 번째 읽기가 다시 느려지고 다음 읽기가 빠를 것으로 예상됩니다.

+0

안녕하세요, Jared, 답장을 보내 주셔서 감사합니다. 말씀하신 것과 정확히 같습니다. 처음으로 성능을 향상시키는 방법에 대해 궁금한 점이 있습니까? 처음으로 버퍼링을 중단 할 수 있습니까? 도움이 될 것입니까? – thisEric

+0

일반적으로 버퍼링은 유용하며 시스템에서 그대로 유지해야합니다. SD 카드 읽기는 RAM 읽기보다 항상 느립니다! –

+0

안녕하세요 Basile, 당신은 맞습니다, 대부분의 시간을 버퍼링 유용하지만, 처음으로 성능이 나아질 것인지 여부, 버퍼링없이 궁금해하는 O_DIRECT 플래그를 시도, 성능이 처음으로 더 나쁘다, 나는 혼란 스러워요 . – thisEric