使用C++比C慢吗?

aazhi 2002-04-12 06:23:03
我把<string.h>里面的函数全换成了string类的成员函数,把FILE *全换成了fstream类,发现程序运行慢了很多,我不知道是否是换成C++造成的。使用gprof,结果(部分):
granularity: each sample hit covers 8 byte(s) for 0.00% of 29.20 seconds

called/total parents
index %time self descendents called+self name index
called/total children

<spontaneous>
[1] 10.7 3.14 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, unsigned long, char) [1]

-----------------------------------------------

<spontaneous>
[2] 6.7 1.97 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_RWpref(void) const [2]

-----------------------------------------------

<spontaneous>
[3] 6.5 1.91 0.00 _RWrwstd::_RWrw_basis<char*, std::allocator<char> >::operator =(const char*&) [3]

-----------------------------------------------

<spontaneous>
[4] 5.9 1.71 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_RWgetRep(unsigned long, unsigned long) [4]

-----------------------------------------------

<spontaneous>
[5] 5.6 1.65 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_RWunLink(void) [5]

-----------------------------------------------

<spontaneous>
[6] 3.9 1.15 0.00 std::operator >>(istream&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) [6]

-----------------------------------------------

<spontaneous>
[7] 3.7 1.07 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::length(void) const [7]

-----------------------------------------------

<spontaneous>
[8] 3.0 0.87 0.00 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(int, char) [8]

-----------------------------------------------

<spontaneous>
[9] 2.9 0.84 0.00 bcd2str(const unsigned char*, char*, int, int, int, int) [9]

-----------------------------------------------

<spontaneous>
[10] 2.5 0.73 0.00 _RWrwstd::_RWstring_ref<char, std::char_traits<char>, std::allocator<char> >::_RWremoveReference(void) [10]

运行环境为Compaq Digital ES40,好像SUN和HP也差不多,请教各位大虾,C++比C慢吗?
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjm_d 2002-04-13
  • 打赏
  • 举报
回复
不 这要看在什么地方,
如果我们比比使用类和其虚访问和使用SWITCH CASE 的话,你就会发现
beizi 2002-04-13
  • 打赏
  • 举报
回复
用低级语言编程快,高级的就慢了,不奇怪
shornmao 2002-04-12
  • 打赏
  • 举报
回复
C++程序在大多数情况下的执行效率与C相当,除了极少数的虚函数和多冲继承等应用。不过如果你用C来自己处理这些问题,效率可能和C++程序一致,而且自己写的代码更容易出错。
你这里提到的是库的效率问题,C++的流类相比C的stdio来说效率略低,因为里面包含了很多附加的容错处理,如果你偏重效率甚于可维护性,可以考虑使用C库替代。
但是你要确信这里的效率对应用程序的整体效率有显著影响,记住80/20法则,程序80%的时间执行的是20%的代码。
aazhi 2002-04-12
  • 打赏
  • 举报
回复
但是好像慢了很多啊!
应用程序是要求一定效率的,我是不是应该暂时放弃一下string和fstream?
Kusk 2002-04-12
  • 打赏
  • 举报
回复
虽然有时候C++会损失一些效率,但其实它对效率与编程质量的折衷方面做得还是相当令人满意的。
ljf1107 2002-04-12
  • 打赏
  • 举报
回复
既要功能强大,又要速度,真是矛盾的两件事呀。
miin_zo 2002-04-12
  • 打赏
  • 举报
回复
c++多了很多的一般性操作,我个人以为的
jamesfangjing 2002-04-12
  • 打赏
  • 举报
回复
正确!

c++确实比c要慢,但不应该相差很多,大约在10%---15%之间吧!
因为他牺牲了一些c的底层的东西。同样的道理,c虽然快,但也比不上汇编!

这也是我看文献得来的资料,具体差距你完全可以自己试一试!
miin_zo 2002-04-12
  • 打赏
  • 举报
回复
有一点,

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧