代码优化

代码优化

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

好久没写文章,近期忙房屋装修,难得闲下来写写blog,想起之前搞得非常狼狈的3个性能问题,都是非经常见的,记下来引以为戒:

1. 在写系统的i2c driver的时候,从參考板拿来一份轮询的driver sample,改完之后就直接提交代码到系统库,主要的測试都没有问题,一直到系统级别測试,发现和其它系统的交流的某个task A偶尔会timeout,一直找了非常久以为是网络有问题,最后无意观看使用Vxworks自带的spy monitor log里面发现当task A timeout的时候,i2c driver task占用CPU百分比非常高,而i2c driver task仅仅是简单的读取操作,并且读取次数也不多,细致查看轮询代码, driver里面在等待i2c返回的时候使用了sysUsDelay,看了UsDelay的实现就是i++…..难怪CPU占用非常高,改成中断模式之后问题解决。

2. 第二个问题就更有意思u时候遇到的,折腾了近1个月,在系统的end to end測试中,发现一旦Call的数目上去之后,有一个task的CPU使用率过高,有怀疑过硬件性能不行,也有怀疑过系统压力过大,最后还是看代码看到一个有意思的地方:三重循环。一看到三重循环就非常紧张,每次task运行就是368*3*2次循环体,谨遵循环优化办法:把推断条件能外移的外移,同一时候也把code里面的除法都改成了移位操作。CPU使用过高问题得到解决。

3. 系统压力測试的悲剧:怎么说呢,感觉就是自己太菜,第一次做系统级别的測试,被广告“在cdma的网络里面,Rev A号称3.1mbps的速率”忽悠了。所以系统级别的測试希望手机ftp的速率能够上到3.1mpbs,结果整个系统一直处于崩溃状态,找高通询问他们芯片的处理能力,找自己系统的代码处理能力瓶颈,最后发现overhead没考虑,所以才会出现系统负载只是来的情况,考虑全部的overhead,手机ftp应用最多去到2.7、2.8mbps,我去。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118933.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • garch模型的结果分析_管理学五力模型分析案例

    garch模型的结果分析_管理学五力模型分析案例  readdatalibrary(quantmod)  #加载包getSymbols(‘^HSI’,from=’1989-12-01′,to=’2013-11-30′)  #从Yahoo网站下载恒生指数日价格数据dim(HSI)   #数据规模names(HSI)  #数据变量名称chartSeries(HSI,theme=’white’)  #画出价格与交易的时…

    2025年7月13日
    0
  • UNIX的常用命令「建议收藏」

    UNIX的常用命令「建议收藏」Unix常用命令介绍:  多命令行:“;”多行命令:“\”1、系统关闭reboot、halt/shutdown、poweroff2、passwd命令:修改系统用户密码passwd[username]3、su命令:切换系统用户su[-username]username为空表示root用户4、cat命令:将指定的文件在标准输出到显示器cat [-AbET] [文件名列表]-A      …

    2022年5月31日
    92
  • namenode负责资源调度,yarn也是资源调度,二者的区别是什么

    namenode负责资源调度,yarn也是资源调度,二者的区别是什么namenode负责资源调度,yarn也是资源调度,二者的区别是什么

    2022年4月23日
    36
  • 蓝桥杯单片机超声波模块代码编程

    蓝桥杯单片机超声波模块代码编程

    2021年11月12日
    48
  • reading recovery_the common reader

    reading recovery_the common readerBookKeeperAutoRecovery背景版本:BookKeeper版本为4.12.0(Pulsar2.7.0的内置版本)Recovery主要针对的场景是:当集群中有部分bookie节点因异常原因宕机,此时我们恢复该节点上存储的数据。BookKeeper提供了两种数据恢复方式,一种是手动恢复(Manualrecovery),一种是自动恢复(AutoRecovery)。ManualRecovery如果集群中未开启AutoRecovery的功能,则用户可用手动恢复。手动恢复

    2022年10月24日
    0
  • 回归模型中的u_什么是面板回归模型

    回归模型中的u_什么是面板回归模型文章目录最简单的RNN回归模型入门(PyTorch版)RNN入门介绍PyTorch中的RNN代码实现与结果分析版权声明:本文为博主原创文章,转载请注明原文出处!写作时间:2019-03-0212:46:15本文部分图片素材来自互联网,如有侵权,请联系作者删除!最简单的RNN回归模型入门(PyTorch版)RNN入门介绍至于RNN的能做什么,擅长什么,这里不赘述。如果不清楚,请先维基一…

    2022年10月20日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号