시작하기 전에 코드에 내 의견이 부족하다는 것에 사과드립니다. 나는 현재 OBJ 파일 로더를 만들고있다. (자바에서는.) 내 코드가 작은 파일에 대해 예상대로 작동하지만 파일이 커지면 (예를 들어, 현재 25,958 라인을 가진 obj 파일을로드하려고 시도하고있다.) 전체 시스템이 충돌한다. 최근 C++에서 전체 프로젝트를 마이그레이션하여이 모델을 빠르게로드 할 수있었습니다. 디버거와 함께 프로파일 러를 사용하여 전체 프로세스가 시스템에서 충돌하는 위치를 파악했습니다. 나는 몇 가지 것을 눈치 챘다. 첫째, 그것은 개시 과정에 매달려 있었다. 둘째, 힙이 거의 다 써 버렸습니다. (힙의 약 90 %를 사용했습니다.) 내 코드는 여기에서 찾을 수 있습니다. http://pastebin.com/VjN0pzyi 이 코드를 최적화하는 데 사용할 수있는 방법에 대해 궁금합니다.OBJ 파일 최적화 (3d 모델) java 로딩
답변
메모리가 부족하면 모든 것이 느려집니다. 나는 당신이 아마 자동적으로
startChar = line[i].charAt(k);
에 최적화되지 않습니다
startChar = line[i].toCharArray()[k];
같은 기술, 일을 코딩을 개선해야한다 같아요. 어쩌면 문자열을 인턴하는 것은 많은 메모리를 절약 할 수 있습니다. String.intern 또는 Guava Interner을 사용해보십시오.
핫스팟은 간단한 방법을 선호하므로 리팩토링 도구입니다. 코드는 읽기가 어렵고 크기가 주어지면 최적화가 전혀 수행되지 않는다고 생각합니다!
나는 이것이 오래된 질문이라는 것을 알고 있지만, 성능 문제에 대해 두 센트를 던지고 싶었습니다. 코드가 느리게 실행될뿐만 아니라 힙의 90 %를 차지한다는 코드가 있습니다. 나는 90 %가 엄청난 과장이라고 말하지만, 여전히 Java 게임 개발에서 가장 큰 결함을 지적하고 있습니다. Java는 구조체와 같은 값 유형을 지원하지 않습니다. 즉, 속도를 높이려면 OOP를 피해야합니다. 왜냐하면 로더에 대한 클래스를 인스턴스화 할 때마다 힙에 할당되기 때문입니다. 그런 다음 GC가 불규칙하게 벗어나서 로더가 생성 한 인스턴스를 남겨 둘 때까지 기다려야합니다. 이제 C# 같은 언어를 의 예제로 사용하여 실제 언어를 만드는 방법. C#은 구조체를 완벽하게 지원합니다. 로더의 모든 클래스를 대체 할 수 있습니다. 면, 그룹, 꼭지점, 보통, 클래스는 값 유형으로 처리됩니다. 스택이 풀면 삭제됩니다. 쓰레기는 생기지 않습니다. 수업을 1 ~ 2 권만 사용해야한다면 최소한 쓰레기가 생성됩니다.
제 생각에는 Java를 게임 개발에 사용하지 마십시오. 나는 C#을 발견하기 전에 수년간 그것을 사용했다. 엄밀히 말하면 내 의견은 여기에 있지만 자바는 끔찍한 언어입니다. 다시는 사용하지 않을 것입니다.
- 1. UWP 3d 모델 로딩
- 2. .obj 정보 3D 모델 형식 및 VBO
- 3. Autodesk Forge 모델 파생 API : OBJ 파일
- 4. IE7 Javascript 파일 로딩 - 최적화
- 5. Obj-c 대리인 모델 - Java?
- 6. Obj 모델 파일 및 애니메이션
- 7. 파싱 .obj 자바 스크립트가있는 3D 그래픽 파일
- 8. Windows phone에서 3D 모델 .obj 파일로드 중 7
- 9. OBJ 모델 로딩 텍스처 좌표와 정점의 위치는 없습니다 그러나 이것은 지금 모습입니다, 내 게임에 3D .OBJ 모델을로드 제대로
- 10. C#/WPF에서 3D 모델 읽기, 최적화 (폴리곤 크런치) 및 3D 모델 표시에 대한 최선의 접근 방법
- 11. 3D 주변을 비행하다 obj
- 12. assimp로 바이너리 STL 모델 로딩
- 13. Three.js로 모델 로딩
- 14. 임의의 3D 폴리곤 (obj 파일 또는 stl 파일)의 중심입니다.
- 15. 왜이 3D 모델 (.obj)을 화면에 표시 할 수 없습니까?
- 16. 포인트 클라우드에서 wrl/obj 모델 생성
- 17. 서로 wavefront obj 모델 포함
- 18. 게임용 3D 모델 형식
- 19. Rajawali - 모델 obj 오류의 텍스처로드
- 20. 3D 모델
- 21. Java 재귀 파일 복사 최적화
- 22. 3d 객체 처리 .obj import
- 23. Java에서 OBJ 파일 실행 /로드
- 24. 3D 카메라에서 3D 모델 생성
- 25. OBJ 모델 Renderering는 간격
- 26. 온라인으로 3D 모델 표시
- 27. Android 가져 오기 3D 모델
- 28. lighweight wavefront obj 모델 파서
- 29. OpenGL 프로젝트에서 3d 모델 (.fbx 또는 .obj 파일)을 가져 오거나 렌더링하는 방법은 무엇입니까?
- 30. 세 개의 j를 사용하여 obj 파일 끌기