编译后那个效率高

2019-08-01 14:58发布

编译后那个效率高些
#define INT8U REG_T

INT16U m_data

push_to_buf(*(((REG_T*)&m_data)++));

push_to_buf((REG_T)(m_data<<8));

把m_data,放到一个REG_T的数组内;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
spark周
1楼-- · 2019-08-02 18:20
如果m_data是局部变量,第一种写法要求m_data不能放在寄存器中,第二个的m_data则可以放在寄存器,寄存器访问要比内存访问快很多。
午夜粪车
2楼-- · 2019-08-02 23:30
是的,如果所用的cpu支持多位移位运算,两者的效率不会有太大的区别,但第二种更安全。
dengdc
3楼-- · 2019-08-03 00:23
push_to_buf((REG_T)(m_data>>8));是把m_data的低字节压上去这是大端还是说小端?
dengdc
4楼-- · 2019-08-03 02:53
 精彩回答 2  元偷偷看……
huangchui
5楼-- · 2019-08-03 06:35
我觉得你的REG_T一般来说是指寄存器类型,也就是说几位机,而第2种好像只能在8位机下工作。
spark周
6楼-- · 2019-08-03 09:21
第一种才要考虑大端小端的问题。

一周热门 更多>