|
1
3
很少有
关于您的最后一个问题:一般来说,您应该更愿意忽略那些易于复制的有价值的东西(比如基本类型的对象--
|
|
|
2
1
我不认为编译器可以使用const关键字进行优化,因为在任何时候,constness都可以被丢弃。 与其说是优化,不如说是正确。 |
|
|
3
1
一旦启用某些优化,编译器将注意到
传递参数的点
|
|
|
4
1
这两种形式都没有实际的好处。如果类型小于一个机器字,则按值计算。另一件事是,现代编译器的语义分析远远高于const所能做和不能做的,您只能在它是预编译的或者您的代码非常复杂的情况下应用优化。你链接到的文章已经有好几年的历史了,从那以后,编译器除了做大量的改进之外什么也没有做。 |
|
|
5
0
一些“通用编译器”的事情让我头昏脑胀。
不过,所有这些都应该只来自于一个广泛的分析例程,以便您知道实际需要优化的是什么。编译器通常都很擅长优化,而不需要程序员提供太多提示。 |
|
|
6
0
如果您查看Linux内核或类似项目的源代码,您将发现传递给gcc(或使用的任何编译器)的所有优化线索。Linux内核使用gcc提供的所有特性,即使它不在标准中。 This page 总结了gcc对C语言的扩展。我在这里提到C是因为const和volatile也在C中使用。超过C或C++,编译器优化成为这里的焦点问题。 |
|
7
0
我不认为
对于不打算修改的小参数,请使用按值调用。
对于不打算修改的大参数,请使用“按引用调用”或“传递地址”(基本上是相同的),以及
对于你
是
要修改,删除
顺便说一句:如果这是新闻,为了获得真正的性能,您需要知道如何通过分析来发现实际存在的问题。没有一个编译器可以帮你。 |
|
|
gd1234 · 编译器会知道跳过这个循环吗? 2 年前 |
|
|
ChrisB · 为什么Rust不为内存布局重新排序枚举中的字段? 2 年前 |
|
|
Hans · 避免在C++中优化未使用的变量? 2 年前 |