안드로이드 개발 질문/답변
(글 수 45,052)
Junit을 이용해서 RSA 암호화 연산을 테스트 하는 중 입니다.
PC에서 하면 5분이면 끝나는데 모토로라 아트릭스폰을 연결해서 이클립스로 돌리면 1시간이 걸리네요.
아트릭스도 최신기종이라서 듀얼코어에 1Ghz, DDR2 1GB정도인데 너무 차이가 나네요.
PC는 센트리노2 2Ghz , DDR2 3GB 정도이고요.
로그에 아래 메세지가 수천개 찍히는데 혹시 관련이 있을까요?
과다한 Garbage Collect 때문에 속도가 주는게 아닐까 생각되는데 줄이는법 아시나요?
06-08 10:16:19.792: DEBUG/dalvikvm(14706): GC_FOR_MALLOC freed 14811 objects / 521724 bytes in 30ms
06-08 10:16:19.792: INFO/global(14706): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
2011.06.08 11:24:13
답이 나와 있네요.^^
new BufferedReader(Reader r,int size) 이런식으로 선언해서 해 보세요.
그래도, 느리면 ndk 를 이용해서 native 로 하시는 방향이,
예제에 native activity 구현도 상세히 설명이 있는 것 같더라고요.
2011.06.08 13:35:04
답변 감사합니다.
NDK를 사용을 하긴 해야 겠는데 테스트를 해야해서...
위에 메세지 보면 521kb를 해제하는거 같은데, 램이 1Gb니까 Garbage Collect 빈도를 좀 줄일 수 있을거 같은데 혹시 설정하는 법 알고 계신가요?
어플당 메모리 제한이 있어서 GC 발생 빈도가 높은거 같기도 한데 어플 메모리 설정은 어떻게 하나요?
BufferedReader 로그 메세지는 많이 발생하지는 않습니다.




new를 적게하면 낳아지기는 하겠지만.. (Integer, Long ,.. 같은 integer object도 쓰시면 안되고요)
속도가 문제라면 걍 native code로 ..