C_and_CPP 板


LINE

还是不说废话了, 直接写程式吧, 目的是同需求下使用 virtual function 到底有没有 overhead: http://tinyurl.com/bcjawe 档案里面分别是不用 OO 写的 C、用 OO 写的 C、用 OO 写的 C++, 为了公平起见我 C++ 的函式也用 C subset 提供的, 以下是我用的环境: Intel(R) Xeon(R) CPU 5160 @ 3.00GHz x86-64 Gentoo Linux (kernel 2.6.28-gentoo-r1) gcc version 4.3.3 (Gentoo 4.3.3 p1.0, pie-10.1.5) 编译参数如同里面 makefile 只是 -O3。 各跑五次的数据 (loop 跑 500,000,000 次): c: 1.668u 0.000s 0:01.66 100.0% 0+0k 0+0io 0pf+0w 1.668u 0.000s 0:01.66 100.0% 0+0k 0+0io 0pf+0w 1.668u 0.000s 0:01.66 100.0% 0+0k 0+0io 0pf+0w 1.668u 0.000s 0:01.66 100.0% 0+0k 0+0io 0pf+0w 1.668u 0.000s 0:01.66 100.0% 0+0k 0+0io 0pf+0w c_oo: 1.198u 0.000s 0:01.19 100.0% 0+0k 0+0io 0pf+0w 1.180u 0.000s 0:01.18 100.0% 0+0k 0+0io 0pf+0w 1.181u 0.000s 0:01.18 100.0% 0+0k 0+0io 0pf+0w 1.179u 0.000s 0:01.18 99.1% 0+0k 0+0io 0pf+0w 1.175u 0.000s 0:01.17 100.0% 0+0k 0+0io 0pf+0w cxx: 1.344u 0.000s 0:01.34 100.0% 0+0k 0+0io 0pf+0w 1.341u 0.001s 0:01.34 100.0% 0+0k 0+0io 0pf+0w 1.344u 0.000s 0:01.34 100.0% 0+0k 0+0io 0pf+0w 1.341u 0.000s 0:01.34 100.0% 0+0k 0+0io 0pf+0w 1.343u 0.000s 0:01.34 100.0% 0+0k 0+0io 0pf+0w 显然用 C++ 的 OO 机制是会比 C 的 OO 慢一点 ( 其实是因为我 C 的部分没有实作出 OO 特性, 它是 static 语意 (要拔掉 union 然後用 void * 代替资料栏位), 完全模拟 OO 的话那 0.2 秒的差异马上会不见, 有人想战的话我再做细部实作 XD ) 但如果是我的话我会选择写 C++, 用 C 实现 OO 有很多人工打字的地方可能不小心犯错造成很多困扰, 用 C++ 实现 OO 的话那些 code 都是 compiler 帮我产生, 而且我不认为有多少人会很认真的写 c_oo 的那种写法; 更何况本科系的人都知道 80/20 法则 (or 90/15) 及 Amdahl's law, 你只要在真正需要效能的那一小部分程式码避开用 C++ 写 OO 就行了, C programmer 常常有一个通病就是他会认为每行程式码都随时随地在跑, 如果是这样的话演算法的 amortized time complexity 这套理论也可以丢了。 -- Ling-hua Tseng ([email protected]) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://www.tinlans.org --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.108.190 ※ 编辑: tinlans 来自: 118.160.108.190 (03/07 21:09)
1F:→ ggg12345:最影响OS的overhead部份才是关键吧!使用kernel/monitor 03/07 22:33
2F:→ ggg12345:模式的OS(如unix),上半层的monitor用o-o概念最接近,下半 03/07 22:35
3F:→ ggg12345:层的kernel使用C+ASM弹性最适宜,并行的虚耗都在Kernel上 03/07 22:41
4F:→ weiyucsie:後来试着用c改写cxx那个版本测测看(不知道有没有写对XD) 03/08 04:49
5F:→ weiyucsie:结果不同机器编译出来的相对速度不太一样XD 03/08 04:50
6F:→ weiyucsie:(和多核心或ht技术有关吗?XD) 03/08 04:51
7F:→ tinlans:跟指令集有差,还有编译器。 03/08 13:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP