• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 119  文章 - 290  trackbacks - 0

            博客搬家了哦,請(qǐng)移步
            叫我abc

            常用鏈接

            留言簿(12)

            隨筆分類(lèi)

            我的博客

            搜索

            •  

            積分與排名

            • 積分 - 304356
            • 排名 - 84

            最新評(píng)論

            閱讀排行榜

            最近閱讀了《GAME PROGRAMMING GEMS6》,頗有收獲,以筆記之。

            首先是GENERAL PROGRAMMING SECTION。

            1.6 Closest-String Matching Algorithm
            這章描述的是計(jì)算兩個(gè)字符串相似度的算法。
            為什么要計(jì)算兩個(gè)字符串的相似度呢?在以字符串為ID的系統(tǒng)下,常常會(huì)出現(xiàn)粗心拼寫(xiě)錯(cuò)誤的問(wèn)題,這時(shí)候程序的運(yùn)行是為定義的,也比較難查錯(cuò)。這個(gè)問(wèn)題被稱為String-Based ID Lookups。
            通過(guò)計(jì)算字符串的相似度,可以在拼寫(xiě)錯(cuò)誤的時(shí)候從ID集合中找到一個(gè)最近似的ID作為代替,這樣程序能繼續(xù)執(zhí)行,同時(shí)把這個(gè)拼寫(xiě)錯(cuò)誤的事件log出來(lái)。
            算法很簡(jiǎn)單:
            (a)取兩個(gè)字符串的最大長(zhǎng)度 L
            (b)由第一個(gè)字符開(kāi)始逐個(gè)比較兩個(gè)字符串的字符,如果字符相同則相似度加(1/L),如果在全部轉(zhuǎn)換成小寫(xiě)后相同則相似度加(0.9/L)。
            (c)完全不匹配的話,則需要分別移動(dòng)兩個(gè)字符串的字符指針,直到找到下一個(gè)相同的字符對(duì)為止(大小寫(xiě)無(wú)關(guān)),同時(shí)要求這兩個(gè)字符串的字符指針偏移是最小的,即找到一個(gè)最優(yōu)的匹配位置。
            (d)重復(fù)這個(gè)過(guò)程,直到字符串尾。

            當(dāng)字符ID拼寫(xiě)錯(cuò)誤后,就是利用這個(gè)算法找出最匹配的ID進(jìn)行替代。
            這個(gè)算法還是蠻消耗的,因此一般是在debug版中使用,和不使用該算法的系統(tǒng)比起來(lái),這個(gè)能在log中提供一份你實(shí)際上想拼寫(xiě)的字符串的信息,便于更高效的查錯(cuò)。

            1.9 Faster File Loading with Access-Based File Reordering
            這篇文章討論的是加快游戲loading速度的問(wèn)題,提出的方法是基于文件的訪問(wèn)順序重新安排文件的位置。當(dāng)然,這是針對(duì)打包文件的優(yōu)化。
            (a)How Access-Based File Reordering Works
            方法也很簡(jiǎn)單:
            (1)運(yùn)行游戲,通過(guò)ResourceMgr記錄出載入每個(gè)資源的順序和裝載時(shí)間,這份記錄保存到一個(gè)文件上。
            (2)寫(xiě)一個(gè)工具,用來(lái)分析上面的文件,并生成一個(gè)相關(guān)資源的新順序的輸出文件。
            (3)運(yùn)行打包工具,按照新順序重新打包資源。
            (4)重復(fù)這個(gè)過(guò)程。

            最后還介紹了其他一些好的方法
            (b)General Loading Best-Practices
            (1)Sequential Access
            可以翻譯為串行訪問(wèn)吧?簡(jiǎn)單的說(shuō),就是不要老把文件的讀寫(xiě)指針跳來(lái)跳去的,因?yàn)橛布?huì)緩存當(dāng)前指針下的內(nèi)容,指針跳來(lái)跳去的,它的付出就全浪費(fèi)了。所以,從頭讀到尾是最好的。
            (2)Preprocess Your Data
            打包的時(shí)候把數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制格式,盡量是一進(jìn)內(nèi)存就能用的那種,不需要進(jìn)行分析和轉(zhuǎn)換。這樣就省卻了解析時(shí)間了。
            (3)Cache File In Memory
            暫時(shí)不使用的資源不用立即全部釋放,可以先放在資源銀行嘛。
            (4)Data Compression
            數(shù)據(jù)壓縮,減少尺寸也就減少了loading時(shí)間,不過(guò)這又增加了解壓時(shí)間。

            posted on 2007-11-27 21:18 LOGOS 閱讀(1419) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 《GAME PROGRAMMING GEMS6》讀書(shū)筆記

            FeedBack:
            # re: 《GAME PROGRAMMING GEMS6》讀書(shū)筆記-3 2007-11-29 22:30 helixapp
            對(duì)字符串相似的有些興趣 不過(guò)好像效率一般啊  回復(fù)  更多評(píng)論
              
            # re: 《GAME PROGRAMMING GEMS6》讀書(shū)筆記-3 2007-11-30 10:42 LOGOS
            @helixapp
            應(yīng)該說(shuō)效率很差,不過(guò)這個(gè)做法只是為了更方便的排查錯(cuò)誤的,而并非用于避免錯(cuò)誤。  回復(fù)  更多評(píng)論
              
            色婷婷综合久久久中文字幕| 97精品伊人久久久大香线蕉| 欧美国产成人久久精品| 欧美伊香蕉久久综合类网站| 久久av无码专区亚洲av桃花岛| 国产精品一区二区久久国产| 久久久久av无码免费网| 午夜精品久久久久久久| 精品久久久久久国产| 久久久久这里只有精品| 精品视频久久久久| 香蕉99久久国产综合精品宅男自 | 99久久人人爽亚洲精品美女| 狠狠色丁香婷婷综合久久来| 国产精品久久国产精麻豆99网站| 曰曰摸天天摸人人看久久久| A级毛片无码久久精品免费| 久久综合视频网站| 久久人做人爽一区二区三区| 久久这里只有精品18| 7777久久亚洲中文字幕| 久久www免费人成看国产片| 亚洲精品综合久久| 久久精品国产精品青草app| 国产成人精品久久综合 | 久久人人青草97香蕉| 色偷偷888欧美精品久久久| 国产激情久久久久影院小草| 亚洲国产精品狼友中文久久久| 无码AV波多野结衣久久| 久久久久人妻一区二区三区| 久久综合久久综合久久| 国产精品久久久久影院嫩草| 久久久久99精品成人片| 国产精品久久久久久久app| 久久青草国产手机看片福利盒子| 国产激情久久久久影院| 亚洲精品国产字幕久久不卡| 久久99久久无码毛片一区二区 | 无码人妻精品一区二区三区久久久| 久久乐国产综合亚洲精品|