作者blexx (布雷克斯)
看板C_and_CPP
標題Re: [問題] 關於C++ 繼承
時間Thu Jul 22 23:44:02 2010
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: ※ 引述《yshihyu (yshihyu)》之銘言:
剛剛在Athlon XP 2000+, RAM 1.5G的Arch Linux舊機器上做了實驗
//#include <iostream>
class a0 {
public:
explicit a0(void) {value = 100;};
virtual ~a0(void) {};
int get_v(void) {return value;};
int value;
};
class a1 : public a0 {};
...
...
class aN : public aN {};
int main()
{
//aN obj;
//int v = obj.get_v();
//std::cout << v << std::endl;
return 0;
}
照上面的範本來跑:
gcc v4.5.0 死在 8192 (7168花了468秒)
gcc v4.5.0 with O2 死在 8192 (7168花了537秒)
clang v1.1 通過 10240 (花了253秒)
(如果實際使用class aN的話,gcc光編512層就花了597秒。實在太久了,所以沒測)
看有沒有人要用Intel compiler跟VC++測一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.9.139.138
推 softwind:感覺會是一個比較漂亮的數字 ex: 2^31層之類的 07/23 00:48
→ avhacker:沒必要認真吧,這就只是試試看各家 compiler 的極限,與 07/23 01:01
→ avhacker:與語言本身無關. 而且各家 compiler 的實做也絕對夠用了 07/23 01:02
→ Keiichi:果然是8192... 07/23 09:44
推 LPH66:我用 VC2005 測試的上限也是 8192 07/23 09:53
→ LPH66:似乎 VC 比較聰明 在沒有用到時 object file 裡啥都沒有 07/23 09:53
→ LPH66:(即使是 8192 層的 .obj 也只有 1.6K) 07/23 09:54
→ LPH66:而有用到的在 2560 層的 .obj 大小就已經有 49.4M 了...@_@ 07/23 09:55
→ LPH66:編譯時間也是 512 層的兩三百倍(512層 4" vs 2560層 18'34") 07/23 09:56
→ LPH66:(測量是使用 Windows Server 2003 Resource Kit Tool 裡的 07/23 09:57
→ LPH66: timeit 公用程式測量 應該還滿準的就是) 07/23 09:57