在前面的文章里,我发布了修改版的boor到http://download.csdn.net/source/2578241
,
支持中文pdf和中文txt,能正确显示中文目录。
问题
不过,有的朋友反映打开大的pdf文件时,容易死机。
这几天看了下,果然发现问题了。 为了加快读取pdf页面速度,bookr一开始就加载了所有的pageTree到内存中,
这样显示特定页面的时候,就无需查找该页面的PageObject了,这在PC机上一般没什么问题,PC机有虚拟内存,即使pdf文件很大,无非是加载pageTree慢点,
不过在PSP上就不行了,PSP的内存是有限的,而且没有虚拟内存,所以如果PageTree很大,那么很可能会导致内存不够,直接死机了。。。。
解决办法
解决办法其实也很简单,bookr启动的时候不加载PageTree,而是在每次显示的时候,从Root开始便利PageTree查询PageObject对象,任意一时刻,内存中只有一个PageObject对象。
这样就就基本解决了内存问题。下一个问题是查询效率的问题,这个问题其实不那么严重,PageTree本来就是一个树形结构,pdf的PageObject查询可以优化成一个树查询,这样应该会很快,实际编码测试,
根本感觉不到修改前后翻页速度有明显变化。
修改后用 金庸全集三联版.pdf(48.6M)测试OK。
下载
1、下载http://download.csdn.net/source/2578241
解压到psp/game目录下。
2、从http://www.cppblog.com/Files/feixuwu/EBOOT.rar
下载,解压后,覆盖原来bookr目录下的EBOOT.PBP文件即可。
posted on 2010-08-04 17:41
feixuwu 阅读(1981)
评论(2) 编辑 收藏 引用 所属分类:
PSP开发