完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
需要查表,表是无序的
表头是两个字节 第一种 for(i=0;i if(*((INT16U*)ch) == *((INT16U*)&(data.index))) return &data; } 第二种 for(i=0;i if((*ch == data.index[0]) && (*(ch+1) == data.index[1])) return &data; } 个人感觉8位机的第2种快些,32位机或16位机的第一种快些; 谁能分析下 |
|
相关推荐
5个回答
|
|
|
云汉达人 邀请回答
虽然我也讲不清楚哪种速度更快,但是我觉得如果代码量小的话就没必要纠结这个问题,因为即使是8位的单片机处理一条指令也是微秒级别的,你的程序对时间要求会很高么?再多几条指令也多不了多少时间,或者你可以在KEIL里面仿真试试,应该能看到程序模拟运行时的时间。 |
|
|
|
|
|
您的data變數是一個struct吧
就程式來看的話,理論上一定是第一種比較快,因為只有一次比較(Comparison)和布爾(Boolean)判別 而第二種8 Bit比較快的可能原因,在於MCU設計時,內部比較器Bit數和個數都有差別,這將決定需要幾個Clock Cycle才能完成一次比較 |
|
|
|
|
|
云汉达人 邀请回答
如果你写过汇编的程序,就知道,如LiuYang所说,8位单片机对于16位的数据处理要使用到两个以上的寄存器,几对应于多个指令周期。 对于32位与16位而说,也可以使用汇编的,如STM32也有其ARM的汇编指令。 要更快的速率,你使用将for 中的++更改为 - - ,在汇编中 - - 的指令要小于 ++ 的指令。 如for(i=MAX;i>0;i--) |
|
|
|
|
|
|
|
|
|
|
|
会员你好,有了答案要及时选择最佳答案,别忘了哦
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1026浏览 1评论
1853浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1365浏览 1评论
1856浏览 0评论
1181浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 01:11 , Processed in 0.712918 second(s), Total 87, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1988