再次编译运行,发现在嵌入式开发板上运行时间为1秒 。
第五次优化
优化原则:
由于各个数据类型大小不一样,处理速度也不一样,因此可以对数据类型优化
优化代码如下:
#define RGB_SIZE (256)uint16_t R[RGB_SIZE];uint16_t G[RGB_SIZE];uint16_t B[RGB_SIZE];void rgb_table_init(void){ uint8_t i = 0; for(i = 0; i <= RGB_SIZE; i++) { R[i] = 1224 * i; R[i] = R[i] >> 12; G[i] = 2404 * i; G[i] = G[i] >> 12; B[i] = 467 * i; B[i] = B[i] >> 12; }}inline void convert_rgb_image(void){ uint32_t i = 0; for(i=0; i < IMGSIZE; i += 2) {/* 给第一个算术逻辑单元执行 */ uint16_t r0 = R[in[i].r];uint16_t g0 = G[in[i].g];uint16_t b0 = B[in[i].b]; uint32_t temp_out_0 = r0 + g0 + b0; out[i] = temp_out_0; /* 给第二个算术逻辑单元执行 */ uint16_t r1 = R[in[i+1].r];uint16_t g1 = G[in[i+1].g];uint16_t b1 = B[in[i+1].b]; uint32_t temp_out_1 = r1 + g1 + b1; out[i+1] = temp_out_1; }}将函数声明为inline,这样编译器就会将其嵌入到母函数中,可以减少CPU调用子函数所产生的开销 。
再次编译运行,发现在嵌入式开发板上运行时间为0.5秒 。
后续可优化的方向:
(1)将RGB查表的数据放入CPU的高速缓冲存储器(Cache)中,从而提升程序运行时的加载速度 。
(2)代码使用汇编语言进行编写
说明:本文来源于网络,我仅仅是对文章进行了一定的整理,删繁就简,如有侵权,请及时联系我删除!
推荐阅读
- 淘宝店铺退保证金在哪里 淘宝网店的保证金怎么退
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
- 蓝可儿住的酒店叫什么名字 美国酒店蓝可儿事件真相
- 程序员想要35岁不失业,用这两个方法提升自己
- 中国最美的六大草原 呼伦贝尔大草原世界上最大的草原
- 程序员老司机都要错的 Python 陷阱与缺陷列表
- 梦到爬坡很难往上爬终于上去了 梦见自己在爬坡,爬的很吃力
- 写作如何投稿?怎样提升投稿的成功率?写作投稿赚钱的干货技巧
- 东陵石和玉的区别 东陵玉和翡翠的区别
- 如果通过写作在头条赚钱?最全的自媒体攻略来了,我的经历很值得你借鉴
