2014-12-22 2 views
0

나는 그물에서 발견 한 OBJ 로더 라이브러리를 사용하고 있으며 속도를 높이고 싶다. 그것은 선으로 (숫자의 라인은 기본적으로 텍스트 파일)큰 OBJ (텍스트) 파일의 읽기 속도를 높이려면 어떻게해야합니까?

을 .OBJ 파일 라인을 읽는 과정에 그 기능이 작동

나는 약 40 만 라인에 동일시 12메가바이트의 OBJ 파일이 있습니다. 말하자면, 줄을 서서 시도하고 읽는 것이 영원히 필요합니다.

속도를 높이는 방법이 있습니까? 그냥 생각 click me

+0

BufferedReader는 실제로 좋은 방법이며 예를 들어 Files.readAllLines (Java 7)에서도 사용됩니다. 나는 효율적인 버퍼링 같은 다른 장소에서 시간이 손실되었다고 추정한다. 시간이 소비되는 곳을 분석하려고 했습니까? – Carsten

+0

기본적으로 OBJ 파일을 사용하지 말고 메모리에 "있는 그대로"로드 할 준비가 된 자신의 형식을 사용하십시오 (Vertices/Indices로) – Selvin

+0

그냥 이것을 추가하기 위해 테스트 OBJ 파일을 사용하고 있습니다. 10,000 줄에 더 작습니다. 이것은로드하는데 약 20 초가 걸리고 끔찍한 일입니다. (훨씬 빠르지 만 그럴 겁니다.) –

답변

0

: 그것은 (내 자산 폴더에 저장됩니다) 파일 여기

라이브러리에 대한 링크입니다 읽어의 BufferedReader를 사용하려면 먼저 파일을 사용하여 파일의 크기를 얻을 수 클래스 파일을받은 후 :

반환 크기는 덩어리 등의 상당수로 파일 크기를 분할, 따라서 바이트에

File file = new File(sdcard,"sample.txt"); 
long size = file.length(); 
5, 10, 20 e.t.c. 각 청크에 대해 지정된 바이트 범위가 저장됩니다. 위에 작성된 각 청크와 같은 사이즈의 바이트 배열을 작성한 다음, 각 청크를 read (buffer, offset, length) 메소드를 사용하여 해당 문자 배열로 청크를 읽는 별도의 작업자 스레드에 "할당"하십시오. "배열 인덱스"offset "에서 시작하는 배열"buffer "에있는 각 청크의 문자. 바이트를 문자로 변환해야합니다. 그런 다음 모든 배열을 연결하여 최종 전체 파일 내용을 가져옵니다. 각 스레드가 다른 스레드와 겹치지 않도록 청크 크기를 검사합니다. 다시 말하지만 이것은 단지 아이디어 일 뿐이며, 실제로 구현 될 때 제대로 작동 할 것입니다.