如何查找编译器实现细节
How to find compiler implementation details?
众所周知,由于以跳转表等形式实现,switch-case结构可以提供比if-else结构更好的代码性能。只有当你知道编译器是如何实现switch-case时,你才能知道这一点。所以我的问题是,你如何知道一个编译器,例如,微软c++编译器或g++,是如何实现一个特性的?关于这些主题,是否有一些标准的关于通用编译器的文献?
获取how will a compiler implement a feature
的信息不是很有用,因为编译器运行多个步骤,每个步骤都会修改编译结果。
举例:第一步建立一个元语言,第二步做第一个优化,下一步可能内联一些代码,下一步…
因此,您无法了解将要创建的代码。所以你唯一的机会就是:试一试!
对于您的开关/案例示例,重要的是
- 案例模式是线性的
- 模式内的代码被使用一次或多次
- 代码返回或修改变量或只调用其他函数4……还有很多其他依赖项!
忘记优化器结果的预测。
对于gcc,您有源代码,请查看内部:-)
相关文章:
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 编译器如何实现__declspec(align(x)) / __attribute__(aligned(x)))?
- 如何在编译器C++不智能的情况下实现 GLSL vec* 构造语法?
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- C++头和实现,(为什么)它不是由IDE/编译器自动处理的
- 是否可以在不依赖内置编译器的情况下拥有is_trivially_constructible的库实现
- 尝试实现IS_CONSTEXPR() - 编译器差异
- 在不同的平台/编译器上实现相同的浮点计算结果
- 在编译器中实现受保护/私有继承
- 他们实现的开源C编译器(gcc,clang)的实际标准在哪里
- 为什么编译器会在二进制中留下嵌套函数的实现
- 编译器是否确实会实施纯虚拟驱动器的实现
- C/C 中POW()函数的实现是否随平台或编译器而变化
- 我已经在派生类中实现了纯虚拟方法,但编译器抱怨我没有
- 编译器如何实现继承
- 编译器优化合并了相同的函数实现,这意味着在运行时要绕过存根
- C++和CRTP模式的实现与编译器困境
- 如何查找编译器实现细节
- 是否有各种编译器实现的扩展的简明清单
- C++编译器实现命名空间