The*_*ain 6 c++ optimization performance
有人质疑命名空间和文件夹结构是否会影响C#中程序集的性能.答案非常有用,但具体针对C#和CLR.
如果使用gcc用C++编写,命名空间和文件夹结构将如何影响程序集的性能?其他操作系统的情况如何,例如Linux或Mac OS?
如果存在任何重大性能问题,我应该做什么或避免做什么以最大限度地提高性能?
为了扩展凯尔所说的话:
命名空间只不过是用户和编译器将名称放在不同存储桶中的语法方式.它们的存在允许您为事物使用更常见和适当的名称,而不必担心与其他人的冲突.std::vector是一种与数学vector课不同的类型.只要它们位于不同的名称空间中,它们就可以共享相同的名称.
就编译器而言,命名空间中的函数与其他任何地方的函数没有区别.它只是一个有趣的名字.实际上,编译器可以自由地执行所谓的"名称修改":当编译器看到时std::vector<int>,它实际上可以将其转换为类似__std~~vector~t~~int32_t~~__或类似的东西.选择了重整算法,以便全局名称空间中的任何用户定义名称都不能与名称空间管理器使用的名称匹配.因此,所有名称空间范围的名称都与其他名称空间中的名称分开,甚至是全局名称.
基本上,编译过程的第一步是有效地消除名称空间.因此,后来的编译器步骤不知道甚至是什么名称空间.所以他们不能从中生成代码.因此,命名空间不会对编译代码的执行速度产生任何影响.
文件夹...... 不可能重要.编译后,您将获得单个可执行文件,库或DLL.如果编译器根据源文件的位置进行了任何代码生成,那么建议您避免像瘟疫这样的编译器.编译器编写者必须控制他们的用户才能实现这一点.
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |