优化等级与运行效率实测

发布时间:2025-05-06 13:23

电视的能效等级'ECO'模式通常比全功率运行更省电。 #生活常识# #生活建议# #节能技巧# #家电能效等级#

优化等级与运行效率

最新推荐文章于 2024-11-12 17:59:04 发布

如若明镜 于 2018-12-12 23:04:36 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

简介

探讨优化等级与运行效率关系.

简单加法运算

测试平台 STM32F407(时钟168MHz)Zynq 7z020(单核)Intel i5-4590 CPU @3.3GHz 3.3GHz 测试核心代码

::

void add(u32 N); void test_add(void) {u32 N=100000;while(N-->0){add(100000);}return; } void add(u32 N) {u32 a=0, b=0;while(N-- > 0){a = b+N;} }

12345678910111213141516171819202122 测试结果

下图为STM32F407 运行记录

STM32F407 运行记录

下图为ZYNQ 7Z020 运行记录

ZYNQ 7Z020 运行记录

下图为Intel i5-4590 运行记录

Intel i5-4590 运行记录

下图给出了各平台运算时间效率对比结果图

运算效率对比结果

快速傅里叶变换

测试平台 STM32F407(时钟168MHz)Zynq 7z020(单核) 测试核心代码

::

void invert(complex32 *pSrc, u32 n) {int *a, i, j, w, t;complex32 tc;a = (int*)malloc(sizeof(int)*n);for (i = 0; i < n; i++)a[i] = i;w = n / 2;j = n / 2;for (i = 1; i<n - 1; i++){if (a[i] != j){t = a[j]; a[j] = a[i]; a[i] = t;tc = pSrc[j];pSrc[j] = pSrc[i];pSrc[i] = tc;}w = n / 2;while (j >= w)j = j - w, w = w / 2;j = j + w;}free(a); } void fft32(complex32 *pSrc, u32 n) {u32 kn, k, a, b, c, d, e, i, i1, i2;complex32 *Wn, x1, x2;invert(pSrc, n);Wn = (complex32*)malloc(sizeof(complex32)*n / 2);for (i = 0; i<n / 2; i++){Wn[i].real = cos(2 * PI*i / n);Wn[i].imag = -sqrt(1 - (Wn[i].real*Wn[i].real));}kn = log2(n);b = 1; a = n / 2; c = 2;for (k = 0; k<kn; k++){for (d = 0; d<a; d++)for (e = 0; e<b; e++){i1 = c * d + e; i2 = i1 + b;x1 = pSrc[i1];x2.real = pSrc[i2].real*Wn[e*a].real - pSrc[i2].imag*Wn[e*a].imag;x2.imag = pSrc[i2].real*Wn[e*a].imag + pSrc[i2].imag*Wn[e*a].real;pSrc[i1].real = x1.real + x2.real;pSrc[i1].imag = x1.imag + x2.imag;pSrc[i2].real = x1.real - x2.real;pSrc[i2].imag = x1.imag - x2.imag;}b = b * 2; a = a / 2; c = c * 2;}free(Wn); }

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 测试结果

1024点, float32型FFT, 运行100000, 取平均.

STM32F407(时钟168MHz, 上述代码): 21.4ms, 优化等级为3Zynq 7z020(单核, 上述代码): 2.2ms, 无优化STM32F407(时钟168MHz, STM32官方库): 0.78ms, 优化等级为3Zynq 7z020(单核, STM32官方库): 0.71ms, 无优化Zynq 7z020(单核, STM32官方库): 0.23ms, 优化等级为3Zynq 7z020(单核, Ne10): 0.7ms

编译优化等级的影响

测试平台 STM32F407(时钟168MHz)Zynq 7z020(单核) 测试核心代码

上述代码

测试结果 平台: STM32F407(时钟168MHz) 对较简单的加法(1e10次) 优化等级0: 300s优化等级3: 180s 对较复杂的FFT(1e4次, 上述复杂程序) 优化等级0: 217s优化等级3: 214s 平台: Zynq 7z020(单核) 对较简单的加法(1e10次) 优化等级0: 300s优化等级3: 180s 对较复杂的FFT(1e5次, STM32官方库) 优化等级0: 71.2s优化等级3: 22.9s

可见优化等级越高, 运行效率越高, 特别地, 对于上述加法, 由于 a 仅在 a = b+N 中被使用, 所以可以省去赋值操作, 因而优化等级高时, 会将此优化, 因而运算效率差距明显. 对于较复杂的算法, 如果程序中不存在冗余无用的代码, 优化前后, 应该相差不大.

在这里插入图片描述

结论:

优化等级为O0 与 O1~O3时相比, 运行时间相差较大;优化等级为O1, O2, O3时相比, 运行时间相差不大;

网址:优化等级与运行效率实测 https://www.yuejiaxmz.com/news/view/934928

相关内容

电梯配件替换中的运营效率提升与优化方案
实施方案的效率提升与优化.docx
热电联产系统优化运行与节能策略
能源效率提升与优化
个人账户资金效率优化升级实施方案
电能能耗监测管理系统,优化能源使用效率
如何有效优化工作流程提升效率与质量
工作效率优化
个人账户资金效率优化升级实施关键点
智能运维系统的优化与策略实施

随便看看