没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
更多精彩内容
👉个人内容分类汇总 👈
👉C++软件调试、异常定位 👈
#软件调试 #MHF #1603291350@qq.com
C++(Qt)软件调试---验证GCC验证GCC编译优化和生成调试信息
(8)
C++(Qt)软件调试---验证GCC验证GCC编译优化和生成调试信息(8)
1、前言
1.1编译器优化是什么
1.2调试信息是什么
1.3适用范围和测试环境
2、Linux下纯C++代码编译-O参数验证
1.1准备工作
1.2验证不同-O参数对程序大小、性能的影响
3、Linux下纯C++代码编译-g参数验证
1.1准备工作
1.2验证不同级别-g参数对大小、性能的影响
1.3验证不同级别-g参数对调试的影响
4、总结
1、前言
1.1编译器优化是什么
编译器编译优化是指编译器在编译源代码为目标代码的过程中,通过对代码结构和语
义的分析,自动优化目标代码的生成方式,编译器编译优化可以提高程序的性能和可
靠性,但也可能会对程序的可读性和可维护性产生负面影响。因此,开发者需要在代
码调试和维护的过程中进行权衡和选择,以获得最佳的程序性能和开发效率。
编译优化主要包括以下几个方面:
1. 算法优化:通过优化算法的复杂度,减少程序执行的时间和空间消耗。
2. 代码优化:通过优化代码的结构、指令的选择和数据存储方式等,减少程序执行的时间和空间
消耗。
3. 循环优化:通过分析循环结构,优化循环的执行过程,减少循环的执行时间和空间消耗。
4. 内联函数优化:通过将函数的代码直接嵌入到调用该函数的代码中,减少函数调用的开销,提
高程序的执行效率。
5. 代码生成优化:通过对目标代码的生成方式进行优化,减少目标代码的大小和执行时间。
1.2调试信息是什么
C++调试信息是在编译C++程序时生成的一些附加信息,它包括了程序中各个变量、函数以及
类的定义和使用等详细信息。
调试信息可以帮助开发人员在程序运行时快速定位和解决问题,特别是在出现崩溃、错误或异
常情况时,可以帮助开发人员追踪到具体的代码行数和错误原因。
调试信息可以通过编译器选项来开启和关闭,通常在开发和测试阶段开启,而在正式发布时
关闭。
1.3适用范围和测试环境
由于MinGW和GCC基本相同,所以本文适用于GCC和MinGW编译器;
在本文中验证的结果仅供参考;
系统环境:ubuntu22.04;
编译器:g++ (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0;
2、Linux下纯C++代码编译-O参数验证
1.1准备工作
1. 下面验证会从编译后的程序大小、运行性能两个方面进行比较,因为代码比较小,所
以编译速度就不进行验证了。
2. 下面是一个简单的代码示例,代码用于计算1到100000000的整数和,并输出计算结果
和程序运行时间。用于验证g++编译参数-O的每个级别的效果:
3. 我们可以在编译时使用不同的-O级别参数来比较不同优化级别、不同优化参数的效果。
具体地,我们可以使用以下命令编译代码:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
inline int add(int a, int b)
{
return a + b;
}
int main()
{
int n = 100000000;
int sum = 0;
auto start = high_resolution_clock::now(); // 记录开始时间
for (int i = 1; i <= n; ++i)
{
sum = add(sum, i);
}
for (int i = 1; i <= n; ++i)
{
sum = add(sum, i);
}
auto end = high_resolution_clock::now(); // 记录结束时间
auto duration = duration_cast<microseconds>(end - start); // 计算运行时间
cout << "sum = " << sum << endl;
cout << "time = " << duration.count() << " microseconds" << endl;
return 0;
}
g++ test.cpp -o test
g++ -O0 test.cpp -o test-O0
g++ -O1 test.cpp -o test-O1
g++ -O2 test.cpp -o test-O2
g++ -O3 test.cpp -o test-O3
g++ -Os test.cpp -o test-Os
g++ -Ofast test.cpp -o test-Ofast
g++ -Og test.cpp -o test-Og
剩余17页未读,继续阅读
资源评论
mahuifa
- 粉丝: 2w+
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功