你试图用某几个项目没有使用异常,来证明异常不靠谱,这本身是个错误的推理。
因为按你这个推理,只有100%的项目都使用了异常,才能证明异常是靠谱的。
"unreal engine没使用异常,是因为游戏帧数有响应时间要求",这是我拍脑袋的分析。对错与否,可以继续辩。
实际上,性能问题是unreal关注的重点之一。它自己的编码规范写的:
"从历史上看,UE 避免直接使用 C 和 C++ 标准库。造成这种情况的原因有几个,包括:用我们自己的实现替换缓慢的实现,允许对内存分配进行额外的控制,在广泛可用之前添加新功能,进行理想但非标准的行为更改,在整个代码库中具有一致的语法,或者避免与 UE 的习惯用法不兼容的构造。然而,近年来,标准库变得更加稳定和成熟,并且包含了我们不想用抽象层包装或自己重新实现的功能。"
以上是unreal不使用某些C/C++特性的原因。在unreal早期开发时,C/C++的很多基础设施还不够好,包括跨平台的异常支持,但是一旦C/C++的标准实现比unreal自己撸的还要好时,它也是允许提出替换的,是开放的。
C++抛出异常时确实有开销,而且可能还不小,这个我也没否认,所以才会认为可能影响游戏帧数响应。
不光是反射,unreal还有GC,这是它自己的balance,牺牲一点性能换取其他好处。能支持脚本开发,就是为了享用脚本开发的便利性和扩展性。
【 在 foliver 的大作中提到: 】
: 为啥游戏不能用异常,虚幻自带了反射系统,这个消耗不大?你这是自相矛盾。
: 再给你一个LLVM的编码标准
: Do not use RTTI or Exceptions
: ...................
--
FROM 222.128.162.*