原本打算給實驗室的朋友們介紹一下我最新的研究結果,如何高效地實現矩陣運算。結果今晚的學長打擊了我,他們編程不多。我說的這些,他們能聽懂我已經做好的PPT的一半就不錯了。還沒完成的部分由于有范型的東西,估計他們就完全不明白了。編程語言也講個基礎的,C++非一日兩日就能熟悉的。唉。嘆惜我研究半天的東西沒有人懂啊~還好,放在我的blog里,與更多的朋友共享吧。以下PPT講述了一般情況下,編寫矩陣運算遇到的問題,特別是性能問題。主要舉例說明了實現加法運算會產生的問題,如以下的代碼,實際上是非常影響性能的。詳細的請看PPT。
矩陣運算PPT
posted on 2007-03-27 00:14 Jarod-Yin 閱讀(958) 評論(13) 編輯 收藏 引用
你不介紹一下功能 解決問題,誰知道是那方面。 回復 更多評論
如果要講究效率的話,還是用你所說的原始的方法,然后把整個算法封裝起來的好。如果打算用C++,從出發點上就是要放棄一定的效率的,還是用運算符重載增加可讀性比較好一點。建議去讀一讀STL、boost等類庫源代碼,學習一下如何既照顧效率,又照顧封裝之后的可用性。 回復 更多評論
太過于古板,你給他們講個故事,做個例子,生動一點,肯定有人會聽得 回復 更多評論
hehe 不錯,可以做一些測試 回復 更多評論
怎么只有個開頭。 回復 更多評論
再說了,上面的代碼未必很影響性能,如果編譯器好的話。 回復 更多評論
還是原始的辦法好搞科學計算的,就不要太講究什么封裝,用類都顯得多余其實更重要的問題可能是比較底層的,比如緩存命中等等。至于用模板技術,已經有bliz++(是不是叫這個名?)等庫在先,不如去研究研究。其實如果用模板,可讀性更差,除非對template了解很深入,否則幾乎看不懂 回復 更多評論
謝謝各位的關注。 萬連文:根據你的建議,我多寫了一些說明 rockey:解決方法當然也是用了重載。 王一偉 :我確實做過反匯編了 沐楓_ :我不知道什么編譯器會做這些優化,你能否介紹一下? chenger:就是bliz,我就是學習bliz得到的結果 回復 更多評論
[url=http://guises.eguo.com/user1/uutv8806/archives/2007/26.html]Jewelry Wholesale[/url] 回復 更多評論
<a href=http://www.chengan.cn/my/vip/422/archives/2007/743.html>Jewelry Wholesale</a> 回復 更多評論
wholesale jewelry jewelry jewelry Making Handcrafted jewelry wholesale silver jewelry Jewelry Wholesa, China Jewelry Wholesale, pearl jewelry wholesale, wholesale pearl jewelry, pearl jewelry 回復 更多評論
more effective c++里已經提出了lazy evaluation的思想。作者沒有解決怎么實現的問題。 而且看到作者ppt里的代碼,效率好像并不是很高啊。 回復 更多評論
看了一下ppt的代碼,如skipper所說,效率并不高,先不說lazy evaluation。看看Metrix本身的設計: copy construct 其實沒必要2層循環,也沒必要用operator()來存取元素: 這樣寫效率肯定不一樣 Metrix::Metrix(const Metrix& a) { M = a.M; N = a.N; int size = M * N; element = new double[size]; for (int i = 0; i < size ; ++i) element[i] = a.element[i]; } 當然了,上面的還可以再優化,用memcpy會更快: Metrix::Metrix(const Metrix& a) { //... memcpy(element, a.element, size * sizeof(double)); } copy assignment operator以及operator+也一樣可以優化... 不多說了呵呵 回復 更多評論
Powered by: C++博客 Copyright © Jarod-Yin