瀏覽單個文章
RogerShih
*停權中*
 
RogerShih的大頭照
 

加入日期: Nov 2000
您的住址: Taipei,ROC
文章: 573
回答程式的問題.

不管是不是 SIMD, 浮點運算比長整數運算花時間是可以肯定的, 如果懂組合語言, 看指令執行 cycles, 浮點相關運算都很花時間, 即使是整數運算, 相乘/相除也比相加、相減要多上許多的執行時間, 所以寫組合語言時, 手動最佳化的方法中, 就有例如, 能用相加/相減的, 就少用相乘/相除, 如果相乘/相除的母數是 2、4、8、16 這種數字的話, 就用位移指令, 為的就是 效率 -

就算有了 SIMD 也一樣.

3D模型的建立, 螢幕的座標系統是最終的輸出, 但螢幕上的座標, 可是沒有所謂的浮點, 都是整數, 換句話說, 不管你頂點怎麼算、模型怎麼轉, 最終都是要轉成螢幕座標, 顯示在螢幕上, 都是整數.

就程式考量而言, 既然輸出最終必定是整數, 那麼如果能避免浮點運算過多的效能降低, 不但保持程式的一致, 也容易維護, 效率也會比較好.

說真的, 如果在程式期間才建模, 那是當然慢, 所以多數都是在開發期間就建模, 將資料預先產生好, 程式再以完整資料在遊戲中重建模型. 這之中當然有很多學問, 做的不好的, 就跟我前陣子聽一位朋友說國內某廠商寫出來的作品, 3D 效能很差, 差在哪??差在處理 3D 模型的程序上.

下面連結有一些 MMX/SSE/3D!Now 的資料, 我連結的是MMX/iSSE指令集在不同CPU所需的執行時間. 很有趣的, P3 裡指令幾乎都比 athlon 還快, 你要不要來一顆??

http://www.tommesani.com/MMXLatency.html
舊 2004-05-17, 11:23 AM #33
回應時引用此文章
RogerShih離線中