D 的异常处理开销高过 g++

tomqyp 2007-09-08
错了错了上面说的5K是VC8.0在默认参数下的大小
随便给出VC8.0的结果
15.156
15.187
几乎没有区别
redsea 2007-09-08
tomqyp 写道
错了错了上面说的5K是VC8.0在默认参数下的大小
随便给出VC8.0的结果
15.156
15.187
几乎没有区别


完全没有区别搞不好是进行了全局性的分析优化, 分析了那个函数指针从来只取过一个值, 根据这个值, 根本不会抛出异常, 根据参数来优化编译函数, 将代码优化掉了. 如果是这样的全局性优化, 那真的很强.

你试试将 count 改成 volatile 看看 ?

本来我是将 cpp 中的变量设置成为 volatile 的, 但是 d 那边的代码, 全局变量的 volatile 不知道怎么编译错误 (局部变量的 ok), 于是都删掉了.
redsea 2007-09-08
看了这些数据, 有个感觉就是, 教主一个人写的编译器(dmd, dmc), 前端不说, 后端的优化比起一堆人写的编译器还是颇有差距的.

为什么教主不把后端开源呢? 看起来技术并不领先啊? 难道这就是传说中的抛砖引玉, 不希望自己的思路影响到别人, 而让别人有机会写出一个从基本上就更强的东西 ?
oldrev 2007-09-08
redsea 写道
tomqyp 写道
错了错了上面说的5K是VC8.0在默认参数下的大小
随便给出VC8.0的结果
15.156
15.187
几乎没有区别


完全没有区别搞不好是进行了全局性的分析优化, 分析了那个函数指针从来只取过一个值, 根据这个值, 根本不会抛出异常, 根据参数来优化编译函数, 将代码优化掉了. 如果是这样的全局性优化, 那真的很强.

你试试将 count 改成 volatile 看看 ?

本来我是将 cpp 中的变量设置成为 volatile 的, 但是 d 那边的代码, 全局变量的 volatile 不知道怎么编译错误 (局部变量的 ok), 于是都删掉了.


D不支持volatile存储类,volatile 在 D 中是语句:

volatile{
.....
}
tomqyp 2007-09-08
redsea 写道


你试试将 count 改成 volatile 看看 ?了.


你的代码count不是volatile的吗,我没改
oldrev 2007-09-08
redsea 写道
看了这些数据, 有个感觉就是, 教主一个人写的编译器(dmd, dmc), 前端不说, 后端的优化比起一堆人写的编译器还是颇有差距的.

为什么教主不把后端开源呢? 看起来技术并不领先啊? 难道这就是传说中的抛砖引玉, 不希望自己的思路影响到别人, 而让别人有机会写出一个从基本上就更强的东西 ?


去 www.walterbright.com 看看他的生平就知道为什么不开源了。
Global site tag (gtag.js) - Google Analytics