마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

xls를 램에 상주시켜 읽는 속도를 더 빠르게 가능할까요?

0 추천
Workbook workbook = null;
Sheet sheet = null;
Cell cell = null;

try {
	InputStream is = getBaseContext().getResources().getAssets().open("filename.xls");
	workbook = Workbook.getWorkbook(is);

	if (workbook != null) {
		sheet = workbook.getSheet(0);

		if (sheet != null) {

			int nRowStartIndex = 1;
			int nRowEndIndex = sheet.getColumn(2).length - 1;
			int nColumnStartIndex = 0;
			int nColumnEndIndex = sheet.getRow(2).length - 1;
			
			//코드삽입

		} else {
			System.out.println("Sheet is null!!");
		}
	} else {
		System.out.println("WorkBook is null!!");
	}
} catch (Exception e) {
	e.printStackTrace();
} finally {
	if (workbook != null) {
		workbook.close();
	}
}

이런 구조로 xls파일의 셀을 불러오는데요

파일크기는 약 1MB입니다.

 

한번에 불러오는 부분이 여러개다보니 약 1~2초정도 딜레이가 발생되더라구요

(약 2~30초마다 다음 내용으로 넘어가야하는데 딜레이가 너무 눈에띕니다...)

 

xls 파일을 통째로 램에 상주시켜서 읽는속도를 더 빠르게 할수있을까요??

(안드로이드스튜디오상 cpu이용율이 2~30%이니 읽는속도의 문제같아보입니다)

 

혹은 다른 해결방법이 있다면 도움 부탁드립니다

감사합니다!

익명사용자 님이 2015년 10월 19일 질문

2개의 답변

0 추천

BufferedInputStream 로 InputStream 를 wrapping 하시면 되긴 할텐데. .속도가  늘지는 의문이네요.

익명사용자 님이 2015년 10월 19일 답변
try 안에
BufferedInputStream bis = new BufferedInputStream(getBaseContext().getResources().getAssets().open("filename.xls"));

를 이용하여 해보았는데 속도차이가 있는지없는지 모르겠네요ㅠ

친구폰으로 해보니 두개코드 모두 빠르게 되는걸 보니....
폰바꿀때가 된거같아요;;

답변 감사합니다!!
0 추천
버퍼를 빼고는 스트림 참조만 가지고 계시면 되는 문제이긴한데, 실제 속도 저하가 어디서 나는지 시간을 찍어보시는게 더 좋겠죠.
Jinthree (8,980 포인트) 님이 2015년 10월 20일 답변
...