当前位置: 首页 > news >正文

做图素材网站网站制作流程

做图素材网站,网站制作流程,大埔县住房城乡规划建设局网站,北京网站定制报价文章目录 背景介绍 初始代码 优化代码 分析和应用 总结 背景介绍 在一个嵌入式软件开发项目中,有一个使用MATLAB Function编写的算法模块,功能是从一个较大的数组中提取一段数据,然后求均值输出,示例如下: 初始代…

文章目录

背景介绍

初始代码

优化代码

分析和应用

总结


背景介绍

        在一个嵌入式软件开发项目中,有一个使用MATLAB Function编写的算法模块,功能是从一个较大的数组中提取一段数据,然后求均值输出,示例如下:

初始代码

        一开始算法开发的思路非常简单,按照功能需求把算法分成两步。第一步提取目标数据,第二步求均值输出。示例如下:

function y = fcn(u, n)assert(n <= 100);x = zeros(1, n);for i=1:1:nx(i) = u(i);endy = mean(x);

        基于上述算法编译后生成的代码如下:

/* Model step function */void DynamicRAMdown_step(void){real_T x_data[100];int32_T i;/* MATLAB Function: '<Root>/MATLAB Function' incorporates:*  Constant: '<Root>/Constant'*/for (i = 0; i < 5; i++) {x_data[i] = DynamicRAMdown_ConstP.Constant_Value[i];}DynamicRAMdown_Y.y = x_data[0];for (i = 2; i < 6; i++) {DynamicRAMdown_Y.y += x_data[i - 1];}/* Outport: '<Root>/y' incorporates:*  MATLAB Function: '<Root>/MATLAB Function'*/DynamicRAMdown_Y.y /= 5.0;}

        分析上述代码可以看到,该算法的动态内存负荷是一个数组x_data[100]和一个i,数组x_data[100]的length是100,但是实际有用的长度只有5,另外95都是浪费的。

        而且随着具体应用的变化,如果数据数组更大,那么不必要的动态内存负荷浪费就会更严重,所以该算法有较大的优化空间。

优化代码

        我们利用matlab中的数组截取功能,把截取的数组直接送入求均值的函数,这样就不产生上述的中间变量数组x,示例如下: 

function y = fcn(u, n)y = mean(u(1:n));

        基于上述算法编译后生成的代码如下:

/* Model step function */void DynamicRAMdown_step(void){int32_T k;/* MATLAB Function: '<Root>/MATLAB Function1' incorporates:*  Constant: '<Root>/Constant'*/DynamicRAMdown_Y.y = 1.0;for (k = 2; k < 6; k++) {DynamicRAMdown_Y.y += DynamicRAMdown_ConstP.Constant_Value[k - 1];}/* Outport: '<Root>/y' incorporates:*  MATLAB Function: '<Root>/MATLAB Function1'*/DynamicRAMdown_Y.y /= 5.0;}

        分析上述代码可以看到,该算法的动态内存负荷只有一个k,不产生任何的额外浪费

        至此,该算法中动态内存负荷压缩的优化就完成了。

分析和应用

        动态内存负荷压缩,在不同的软件开发项目中重要性是不一样的。一种是数据量非常庞大的应用(例如图像处理),算法优化很容易会产生很大的动态内存负荷压缩。另一种是硬件资源非常小的开发平台(例如单片机),开发的算法如果不经过仔细设计,很容易就会出现动态内存负荷溢出。

        动态内存负荷压缩优化时,需要注意如下几个点:

        1、使用Simulink中的可变数组时,生成的数组大小并不是动态的,而是按照最大Size来生成的。所以使用该功能时要根据自己的应用来计算一下,尽可能把最大Size设定的小一些。

        2、Simulink中设计的算法默认都是生成double型的数据,单个数据就要占用8 Byte的内存。所以我们要根据自己的应用选择合适的数据类型,例如,当精度要求不高时把double型改成single型就能压缩一半动态内存负荷,如果数值范围不大时把int32型改成int16型就能再压缩一半动态内存负荷。

        3、Simulink中设计算法模块时,用端口形式放在外面的信号默认会被定义成全局变量,如果放在里头就是局部变量。所以我们要尽可能地把一些信号放在内部,尽量少使用全局变量,内存使用效率就会提高,也就压缩了动态内存负荷。

        4、以上建议都是从硬件负荷压缩的角度来优化软件的,与此对立的一个优化方向是软件通用性和扩展性。前者的极限优化势必会降低后者的性能,反之依然。所以,要软件设计时要综合考虑各方面的性能,多方面来平衡。

总结

        以上就是本人在嵌入式软件开发中遇到内存优化时,一些个人理解和分析的总结,首先介绍了它的背景情况,然后展示它的初始设计和优化设计,最后分析了内存优化的注意事项和应用场景。

        后续还会分享另外几个最近总结的软件优化知识点,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。


        版权声明:原创文章,转载和引用请注明出处和链接,侵权必究!

http://www.hkea.cn/news/224923/

相关文章:

  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网
  • 网站营销优化方案北京做的好的seo公司
  • 企业网站排名提升软件优化南宁seo优化
  • 创意合肥网站建设杭州seo公司排名
  • 网站专题页是什么中国十大关键词
  • 五月天做网站网络策划与营销
  • 高校网站如何建设论文谷歌官网下载
  • 做网站内容软件个人网站怎么做
  • 收废铁的做网站有优点吗海南百度推广开户
  • wordpress 二维码插件下载信阳搜索引擎优化
  • 个人网站二级域名做淘宝客企业推广策略
  • 厦门做网站seo的seo服务公司招聘
  • 安徽池州做企业网站百度搜索官方网站
  • 芜湖商城网站建设青岛百度快速优化排名
  • 我找伟宏篷布我做的事ko家的网站seoul怎么读