在我开始我对我缺乏在我的代码评论道歉。我目前正在制作一个OBJ文件加载器(在java中)。尽管我的代码按照小文件的预期工作,但当文件变大时(例如,我正在尝试加载一个包含25,958行的obj文件),我的整个系统崩溃了。我最近将整个项目从C++中迁移出来,可以快速加载这个模型。我在调试器旁边使用了一个分析器来确定整个过程在哪里崩溃了我的系统。我注意到了一些事情;首先,它是在启动过程中悬挂的;第二,我的堆几乎完全使用了(我用了堆的90%左右)。 我的代码可以在这里找到: http://pastebin.com/VjN0pzyi 我很好奇,我可以采用优化这个代码的方法。优化OBJ文件(3D模型)加载在Java
0
A
回答
0
当你的内存真的很低,一切都变慢了很多。我想你应该提高你的编程技巧,像
startChar = line[i].toCharArray()[k];
可能没有得到优化,以
startChar = line[i].charAt(k);
自动的。也许实习你的字符串可以节省大量的内存,试试String.intern或Guava Interner。
的热点喜欢短的方法,使重构。代码因为它很难阅读,我认为,考虑到它的大小没有优化完成!
0
我知道这是一个老问题,但我想在我的两分钱扔在你的性能问题。你说你的代码不仅运行缓慢,而且占用了堆的90%。我认为说90%是夸张的夸张,但这仍然让我指出Java游戏开发的最大缺陷。 Java不支持值类型,比如结构体。这意味着为了获得速度,你需要避免OOP,因为每当你为你的加载器实例化一个类时,它就被分配到堆上。然后,您必须始终等待GC启动以消除混乱,并留下装载程序创建的实例。现在以C#这样的语言为例如何创建真实语言。 C#完全支持结构。你可以用他们替换你的每一个装载机类。然后将面,组,顶点,正常,类视为值类型;当堆栈展开时它们被删除。如果您需要使用一两个课程,则不会生成垃圾,或者至少非常少。
在我看来,不使用Java进行游戏开发。在发现C#之前,我使用了它多年。严格地说,在这里,但Java是一种可怕的语言;我永远不会再使用它。
相关问题
- 1. 在windows phone 7中加载3d模型.obj文件
- 2. 如何在Three.js中加载.obj 3D模型?
- 3. 如何使用obj文件加载Qt creator 2.1中的3D模型和纹理
- 4. opengl obj模型加载
- 5. LIBGDX 3d .obj加载程序
- 6. 加载/刷新3D模型
- 7. UWP 3D模型加载
- 8. 在Opencv中加载YML文件 - 优化
- 9. 使用Resource文件夹和Mysql在Unity中加载3D模型
- 10. 在Java中优化文件加密
- 11. android opengl从.obj文件中绘制3d模型
- 12. 在cocos3d中加载3d模型
- 13. 在OpenGL程序中加载3D模型
- 14. 在openGLES中加载3D模型IOS
- 15. 在OpenGL中加载3d模型
- 16. 在iOS中加载3D模型
- 17. 3D投影的3D模型的优化旋转
- 18. 关于.obj 3d模型格式和VBO
- 19. 从Blender加载.obj文件
- 20. Three.js从缓存中加载obj模型
- 21. 将OBJ模型加载到M3G中
- 22. OpenGL加载OBJ模型,纹理失真
- 23. 如何在Vuforia中使用.obj和.mtl文件加载3d模型增强现实iOS sdk
- 24. OpenGL Java获取3D OBJ模型的属性
- 25. 与3D obj模型的Java碰撞检测
- 26. 加载3d .obj文件,并添加背景图像在android动态壁纸?
- 27. IE7 Javascript文件加载 - 优化
- 28. 加载Require.js最优化文件
- 29. PHPExcel大xlsm文件加载优化
- 30. 在three.js中加载OBJ文件