第⼀次编写的测试代码,测试代码,函数直接传值,内部也在拷贝值 1struct PP{
2float x;
3float y;
4float z;
5 };
6
7 PP lots_of_copies(PP a, PP b){
8 PP c;
9 c = b;
ipz208低重心脚轮
10 b = a;
11return c;
12 }
13void lots_of_copies_2(PP a, PP b, PP& c){
14 c = b;
15 b = a;
16 }
17void test_func1()
18 {
19 PP a{1.01, 1.75, 2.45};
20 PP b{1.21, 1.95, 4.25};
21 PP c;
22for(int i = 0; i < 10000000; i++){
24 c = lots_of_copies(a, b);
25 }冷凝水回收装置
26 }
27
28int main()
29 {
30 test_func1();
31return0;
32 }
不优化编译执⾏耗时60毫秒,O1优化编译以后耗时直接降低到2毫秒。30倍以上的性能提升。
第⼆次代码稍微改变⼀下
1struct PP{
2float x;无动力滑翔伞
3float y;
4float z;
5 };
6
7 PP lots_of_copies(PP a, PP b){
8 PP c;
9 c = b;
10 b = a;
11return c;
12 }
13void lots_of_copies_2(PP a, PP b, PP& c){
14 c = b;
15 b = a;
16 }
17void test_func1()
手动榨油机18 {
19 PP a{1.01, 1.75, 2.45};
20 PP b{1.21, 1.95, 4.25};
21 PP c;
22for(int i = 0; i < 10000000; i++){
23//c = lots_of_copies(a, b);
外用药酒
24 lots_of_copies_2(a, b, c);
25 }
26 }
27
28int main()
29 {
30 test_func1();
31return0;
32 }
代码优化主要把函数的返回传值去掉,改为⾛引⽤传递,发现不优化的清空下性能提升到46毫秒,有提升,但是差别不⼤,带优化编译以后的效果是⼀样的。
所以编译器还在其他地⽅做了更⼤的优化,来提升性能
暂时还没想明⽩,记录后续想明⽩了再记录下来