当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [原创] 关于 C++ 的性能——初稿,还没有修改,什么意见 pm 偶,谢谢!
帖子发表于 : 2006-08-03 13:27 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
关于 C++ 的性能

很多地方都质疑 C++ 的性能,认为 C++ 的性能是不如 C 的。不如汇编这是事实,不如 C 是因为你没有正确地使用 C++。在很久以前,我也认为 C++ 的速度不如 C,但现在不这么想了。

在看过 'C++ Generic Programming and the STL' 之后,相信很多人都会打消对 C++ 性能的怀疑,包括我。在书前几章的用 GP 的方法实现了一些 C 函数,一方面在运行效率上完全可以等同于相对的 C 代码;另外,因为使用了 template 仅最后编译的时候才确定类型,在灵活性上远远大于 C。

C++0x 有一份 'Performance TR',“提呈了一个到最基层的硬件的库接口。该 TR 的首要目标是帮助嵌入式系统程序员,同时还驳斥了有关 C++ 代码性能低下以及 C++ 正变得不适合低层任务的流言蜚语。”

我非常欣赏 孟岩 Blog 中的一句话:“别告诉我你的计算机有多快,你很清楚花钱买更‘快’的机器是为了什么”,文章见 http://blog.csdn.net/myan/archive/2001/09/29/1911.aspx,别觉得是偏激,当你掌握 GP 的设计时也会有同样的观点。

当然在了解 GP 之前,你要去感受 C++ 那非同一般的复杂性。C++ 在诞生之际 Stroustrup 做的很多定位是非常合理的,包括“先不考虑扩展语言而是先扩展库”的观点。我在接触 VIM 脚本设计的时候,碰到一些原生函数,我就很纳闷了,它们是从哪来的,还有怎么扩展它们呢?同样的问题在 vbs 和 js 中也出现过。

有书中曾经说到 C++ 越来越底层了,但是下面还有 C——好像出自“不完全”,但是现在的局面很好,我们有 GP 可以提高 C++ 的性能。有人认为运行效率无所谓,那么好,你也没有学 C++ 的必要了。C++ 的 GP 在抽象的同时伴随着运行运行效率的提升,如果你不想了解 GP 的话,用 C++ OOP 的话只是一种精力的浪费。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-08-03 15:23 
头像

注册: 2006-05-20 6:25
帖子: 1263
地址: 山东淄博
送出感谢: 0 次
接收感谢: 0 次
C++的驾驭需要很高的理论水平,对设计模式、面向对象的优缺点都要由所了解才行,否则还不如用C语言方便呢!其实速度对于C++不是问题,主要是C++本身的设计方面问题!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-08-03 16:08 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
所以有人就建议 C++0x 说 C++ 既然已经够复杂了,干脆就做高手的语言算了。但是被 C++ 委员会和 Stroustrup 十分反对。相对之下 C 确实简单很多。如果说到设计问题的话,C++ 你不使用 GP 还不如使用带泛型的 C#2 或者 Java,在面向对象的基础上加入点泛型,那个太简单了。不像 C++ GP 压根就是在泛型上做文章。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-08-26 0:15 

注册: 2006-08-14 11:40
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
GP绝对是C++的精华。可惜啊。大多数国内C++教材和国内高校基本对此只是略提一下,或者根本不提。
以至于很多人认为C++就是C+class的错误想法。唉。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-08-26 16:48 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
难得碰到一个了解 GP 的,GP 对我的代码影响是这样的,我每次写一个函数一个类之前,习惯就输入 template <typename _Tp>,当然 template 并不是 GP,但是是 GP 最好的基础。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2006-09-02 16:08 
头像

注册: 2006-02-23 14:46
帖子: 436
地址: 上海
送出感谢: 0 次
接收感谢: 1
没有五年以上的C++工作经验,不要随便说精通它或了解它。


_________________
====
dubuntu-6.06-livecd-i386正式版正式完工!
====
*支持LiveCD硬盘启动
*Linux 2.6.15-23-686
*永中Office 2007
*LumaQQ+OpenQ+cycloneQQ
**N 多的编程及调试工具**


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2006-09-02 16:13 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
有 10 年以上都要看情况


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2006-09-21 10:36 
头像

注册: 2006-04-29 20:10
帖子: 175
地址: 北京·昌平
送出感谢: 0 次
接收感谢: 0 次
没错儿,C++确实博大精深,除非天才,没有十数年的功夫,谁敢说精通?


_________________
人生若只如初见,何事秋风悲画扇?


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2006-09-21 11:53 
头像

注册: 2006-05-23 13:35
帖子: 225
送出感谢: 0 次
接收感谢: 0 次
必须说的几点:C++ 博大精深,但不表示 C++ 是天才高手们的专利,不用精通 C++ 也可以使用 C++,具体原因参见 Stoustrup 关于 C++09 的一些 FAQ。要精通 C++ 简单地说写 C++ 编译器的人最容易,但并没有人说过要用 C++ 先要精通 C++。很多人不会使用 STL, boost 等等,甚至对 C++ Template 不是非常了解,都用 C++ 做项目(不过会出什么问题就不知道了:))。

C++ 用在 Windows 上也有点“屈才”了。如果用 GP/concept 的方法,不需要用到 COM 来解决类动态加载的问题。但是 m$ 是个企业,它必须搞点东西让效率更低些,让做的东西更复杂(注意,对很多人来说的“简单”),这样它才能赢取更多的利润。

所以 C++ 社区非常看好 C++09,它在标准中强调地引入了 concept 关键字。


_________________
我的 BLOG 欢迎来踩!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译