原本打算给实验室的朋友们介绍一下我最新的研究结果,如何高效地实现矩阵运算。结果今晚的学长打击了我,他们编程不多。我说的这些,他们能听懂我已经做好的PPT的一半就不错了。还没完成的部分由于有范型的东西,估计他们就完全不明白了。编程语言也讲个基础的,C++非一日两日就能熟悉的。唉。叹惜我研究半天的东西没有人懂啊~还好,放在我的blog里,与更多的朋友共享吧。以下PPT讲述了一般情况下,编写矩阵运算遇到的问题,特别是性能问题。主要举例说明了实现加法运算会产生的问题,如以下的代码,实际上是非常影响性能的。详细的请看PPT。
矩阵运算PPT
posted on 2007-03-27 00:14 Jarod-Yin 阅读(945) 评论(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