在前面的文章里,我發布了修改版的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.shnenglu.com/Files/feixuwu/EBOOT.rar
下載,解壓后,覆蓋原來bookr目錄下的EBOOT.PBP文件即可。
posted on 2010-08-04 17:41
feixuwu 閱讀(1996)
評論(2) 編輯 收藏 引用 所屬分類:
PSP開發