编写代码时,尤其是当嵌入式相关的代码时,可以考虑的优化方法通常是设置编译器的优化级别。或在定义变量时考虑变量的范围,然后选择更合适的数据类型根据数据范围。但是,这种优化方法更含糊地操作,并且没有直觉的感觉。为了使代码的优化具有直观的感觉,今天我使用文件来优化代码。
首先查看一个简单的示例。
这是一个非常简单的测试代码,也就是说,让LED Light Flash在主程序中,并每次添加0.1 X变量。该代码需要优化吗?不用担心,请先打开生成的地图文件生成的地图文件在项目中。
地图文件使用记事本在项目目录调试文件夹中的列表文件夹中打开此文件。
在文件的中间,目标文件占用的空间大小。依次找到它,找到一些占用空间的位置。
可以发现,与其他文件相比,该目标文件所占据的空间非常大。因此,此文件来自哪里?看到它,您可能可以推测这是一个相关的浮点与浮点相关的文档。只有一个地方在程序中使用浮动点操作。
这条代码线可以占用这么多空间吗?然后尝试将浮动点操作更改为塑料操作。
展开x 10次,然后每次添加1次,编译代码,然后打开地图文件进行检查。
目前,将发现前面的文档。可以看到该文件刚刚由代码中的浮点操作生成。通过对文件的观察,可以获得结论。浮动点操作在单芯片微型计算机中占据了很多空间,因此请尝试将浮动点操作转换为塑料操作。否则,如果浮动点操作的数量相对较大,则单个单一的空间- 芯片微型计算机很快就会填充。
接下来,通过串行端口打印变量的值。
通过串行助理观察印刷值
串行端口的值也正常,然后继续检查文件。
在文件中,您可以在文件前面和后面看到更多文件。职业空间非常大。
那为什么要有一个很大的文件?这是因为printf函数支持浮动点数字打印,并且该函数中有一个浮点数,因此它将生成一个文件。调用printf函数时也会生成。
可以看出,该函数占用的空间很大,并且在程序中尽可能避免该功能。那么当我想打印数据时该怎么办?您默认可以通过单个单曲打印字符- 芯片微控制器,但还有另一个新问题。串行输出是字符格式。现在要打印整数,如何将整数转换为字符格式?您可以通过自定义功能将数字转换为字符串,然后通过串行端口输出字符串。
首先编写整数传输字符串的函数。
接下来,编写相关功能。
修改下面的主要功能代码。
首先,该变量按函数转换为字符串,然后通过函数打印字符串。打印效果如下:
让我们看一下文件中占用的空间的大小。
可以通过文件看到,与直接使用函数相比,自定义函数以实现打印功能必须节省很多空间。通过这种方式,通过观察文件中的目标文件大小,在优化的代码和代码中,在优化之前可以在优化程序的过程中看到。这样,在调试代码的过程中将有一个竹子,并且它不会像无头苍蝇那样在任何地方碰到。