标签:
姓名 |
王奈 |
时间 |
2016年6月29日 |
学习内容 |
今天组内的项目改进包含了: (1)图形界面的改进。 (2)以及登录界面的tab错误修正。 我的工作就是将这些改进记录在文档中。 除此之外,我还进行了嵌入式开发中算法效率的研究。 之前在编写算法程序时,比较注重的是时间复杂度的高低,而对空间复杂度并没有太多的留意,因为,执行时间是大家比较关注的事情,而对于内存的使用效率问题,似乎只要是不超出内存限制,就没有必要去关心它。但是在今天的嵌入式项目开发中,出现了很多次复杂度超出预期的问题,这问题包含了时间复杂度与空间复杂度的问题。 首先来说时间复杂度:不同于传统的计算机编程,在嵌入式开发中,不同的开发板处理器的主频相差很多,但是绝不会超过我们正在使用的计算机的Ghz级别,一般都在10~30Mhz之间。这样一来,时间复杂度就变得尤为重要。比如一个低复杂度的程序和一个高复杂度的程序,在Ghz级别处理器看来并没有什么执行时间上的差别,但到了Mhz级别的处理器上,执行时间上可能相差几倍或者几十倍。这时便不能用传统的思路来编写程序,什么动态规划,遍历算法,枚举等等,全部都不再适用,许多复杂的计算,都要在纸上手工完成,而代码必须是一些不得不写的算法部分,这样一来工作量就很大。又比如,项目中要计算121个点的坐标,在电脑上运行此程序,基本上只要输入数据,回车便能得到结果,但要是把程序原封不动地移植到开发板上,运行的时间基本上都维持在60秒左右,才能得到结果,这样显然不行。解决方案就是:要么修改为复杂度更低的算法,要么就把所有可能的结果保存下来。其中前者不仅费时费力,而且效果不佳,而后者就类似于硬写入的原理,每次的操作只是简单的从数组里面取结果,并加入一些寻址译码的计算即可,简单快捷,但是前期的计算量太大。我所采用的是第二种方法,至少他能够保证运算的正确性与执行的时效性,至于前期的计算开销,比起算法优化工作,我认为还是有使用价值的。 但是,这种方法所带来的问题就是存储问题,那是我明天要解决的问题,明天再写吧。 |
所遇问题 |
嵌入式开发中时间复杂度优化。 |
解决方案 |
预计算,存结果,结果存储地址译码。 |
标签:
原文地址:http://www.cnblogs.com/kiyoshikazuya/p/5628496.html