您能否告訴我如果使用矩陣庫導致運行時間比常規for循環更快?目前,我有一些方法使用循環遍歷多維向量來計算矩陣產品和基於元素的產品的循環,其中矩陣大小大約爲1000行×400行。這個方法是我程序中最常用的方法,我想知道如果使用矩陣庫會增加程序的速度。另外,你會推薦哪個庫(來自http://eigen.tuxfamily.org/index.php?title=Benchmark,Eigen對我來說最好)?矩陣庫vs C++中的循環
謝謝
您能否告訴我如果使用矩陣庫導致運行時間比常規for循環更快?目前,我有一些方法使用循環遍歷多維向量來計算矩陣產品和基於元素的產品的循環,其中矩陣大小大約爲1000行×400行。這個方法是我程序中最常用的方法,我想知道如果使用矩陣庫會增加程序的速度。另外,你會推薦哪個庫(來自http://eigen.tuxfamily.org/index.php?title=Benchmark,Eigen對我來說最好)?矩陣庫vs C++中的循環
謝謝
是 - 相當數量的C++矩陣庫(例如,MTL,uBLAS庫,突擊++)使用模板元編程來優化自己的行爲。如果沒有其他理由,我會從Boost uBlas開始。您可能還想查看其他可能性的OO numerics庫列表。
我想回答這個問題「我應該」而不是「哪一個」,因爲它不清楚你實際上是否需要這樣的庫。
矩陣庫會提高執行時間嗎?大概。他們在高中教你的方法肯定不是最快的。但還有其他問題需要考慮。
首先,你是否過早優化?試圖儘可能快地讓你的程序儘可能快是誘人的,但並不總是正確的做法。你必須做出決定,如果這樣做是真正有效的方式花時間。
二,速度對可用性有什麼重大影響?讓程序在2秒而不是4秒內工作並不是真的值得......但30小時而不是60小時?也許是這樣。我喜歡在拋光之前強調一切工作。
最後,我遇到了幾年前其他人寫過的幾個代碼示例,這些代碼完全沒用。無法用新的操作系統或編譯器或不同的東西編譯的舊庫意味着我不得不完全重寫一些浪費數週的時間。它最初看起來似乎是一個好主意,可以獲得額外的百分之幾的性能,但這意味着它們的代碼壽命有限,尤其是因爲文檔較差。
保持簡單愚蠢是許多事情的優秀口頭禪。我絕對需要的時候強烈建議只使用庫,然後只使用那些看起來很長壽和穩定的庫。
你爲什麼不把benchamrk和這兩個結果報告? – 2011-04-16 05:05:33
下面是一個問題:這個函數調用實際上是否會導致您的應用程序出現瓶頸?如果沒有,爲什麼要花費時間來優化它呢? – 2011-04-16 05:07:56
嘗試提升uBLAS:http://www.boost.org/doc/libs/1_46_1/libs/numeric/ublas/doc/index.htm – ognian 2011-04-16 05:14:35