看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual Studio 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL, OpenMesh 問題(Question): 我利用 OpenMesh 讀入 .obj 檔並且進行處理,接著再用 OpenGL 畫出, 而目前卡在速度上有很大的問題。 對於 .obj 檔,如果它有 n 個 Vertex, 我就必須要呼叫以下這個函式( calQ() ) n 次: http://codepad.org/ynhb7hmq 其中的 Matrix44 是我自定義的 class,以下是 Constructor 的部分: Matrix44::Matrix44(double* m) { for(int i=0 ; i<16 ; i++) Q[i] = m[i]; } 在剛剛的 calQ() 函式中會呼叫 calKp(),程式碼如下: http://codepad.org/ibVKUZhH 所以總共有: 1. function : calQ() 2. function : calKp() 3. class : Matrix44 現在的問題就是當我檔案很大時,我甚至要呼叫到四萬次以上 calQ() 結果我跑了很久很久都還跑不完。 純粹論執行的話應該是沒有寫錯的部分,因為已經拿較小的檔案做檢查了。 現在就只差如何讓它跑快一點,不然根本沒辦法用... 想了很久還是想不到該怎麼辦,想請各位前輩指點指點 (_m_) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.82.93
akasan:有切換到 Release build 了嗎? 04/13 22:49
akasan:ctor 部份換 memcpy 試試 04/13 22:50
linotwo:可以試試把 Q 傳進 calKp 累加,而不要用 return 的方式 04/13 23:09
Nestarneal:a大:有切到 release build。ctor指的是...? 04/13 23:40
Nestarneal:l大:收到。我來改改看 :) 04/13 23:40
Bencrie:這種東西 CPU 要算到 realtime 好像有點拚 XDD 04/14 00:06
linotwo:如果不需要每個 frame 都重算的話,可以另外做個工具程式 04/14 00:22
linotwo:把算好的資料存成自己的格式的檔案,減少重複計算量。 04/14 00:23
johnlinvc:有跑過profiler嗎? 04/14 11:19
Nestarneal:目前改用多個 thread 下去跑總算比較滿意了 XD 04/14 18:34
Nestarneal:j大說的 profiler 是指什麼呀?聽一次聽到 04/14 18:35
diabloevagto:profiler 可以分析程式運行數據,你可以用來查說 04/14 18:48
diabloevagto:那個部份花費多少時間,佔總體百分比為多少 04/14 18:48