C++ BUILDER中*256与 << 8 的效率,结论:一样
来源:互联网 发布:win7查找网络打印机 编辑:程序博客网 时间:2024/06/10 12:41
我们在 C++ BUILDER中常常需要将一个数*256,它与<<8的效率究竟哪个好一些?我们觉得移位效率更高,实际情况如何呢?
有如下两个语句:
lngDataLen = chrData[0] * 256 ; //长度,使用乘法
lngDataLen = chrData[0] << 8; //长度,使用移位
以下是程序运行时的DEBUG窗口。
Unit1.cpp.365: lngDataLen = chrData[0] * 256 ; //长度,使用乘法
00403461 33C0 xor eax,eax
00403463 8A852CFFFFFF mov al,[ebp-$000000d4]
00403469 C1E008 shl eax,$08
0040346C 898568FFFFFF mov [ebp-$00000098],eax
Unit1.cpp.366: lngDataLen = chrData[0] << 8; //长度,使用移位
00403472 33D2 xor edx,edx
00403474 8A952CFFFFFF mov dl,[ebp-$000000d4]
0040347A C1E208 shl edx,$08
0040347D 899568FFFFFF mov [ebp-$00000098],edx
结论:二者运行效率相同。
注意:若是使用 << 时,要注意它的优先级,需要加上括号,如:
lngDataLen = (chrData[0] << 8 ) + chrData[1];
其它:以上在C++ Builder 6/C++ Builder 2009中调试。
- C++ BUILDER中*256与 << 8 的效率,结论:一样
- c++builder中TDateTime与c中time_t的转换
- 数据结构中两个简单结论的证明(严蔚敏 C语言版)
- Repeater与DataGrid的效率,到底哪个的更好?!(结论很可能和你认为的不一样!)
- Repeater与DataGrid的效率,到底哪个的更好?!(结论很可能和你认为的不一样!)
- C/C++中字符串与指针 效率
- 【C#】 String和String Builder效率比较
- C++Builder中定义自己的事件
- C++Builder中使用Excel的类
- C++Builder 中 Mapx 的对象引用
- C++Builder中注册表的操作 (转载)
- C++Builder中注册表的操作 (转载)
- C++Builder中注册表的操作 (转载)
- C++Builder中TIniFile类的使用
- C++Builder中MessageBox的基本用法
- C++Builder中MessageBox的基本用法
- c++builder 中调用WebService的例子
- C++Builder中MessageBox的基本用法
- javascript:void(0)
- c# Web Services学习笔记(四、SOAP协议绑定框架)
- 简单的ASP.net防SQL注入
- select 表单变化更改图片
- http error: 505
- C++ BUILDER中*256与 << 8 的效率,结论:一样
- 关于SkinMagic的破解(转)
- 数据库中存储过程和视图的区别
- mysql inner join性能
- Fc9中安装ATI驱动,实现XGL,Compiz/Beryl效果Howto for fglrx (Ati driver) , XGL and Compiz / Beryl
- GOOGLE女工程师的一篇文章-如何准备软件工程师的面试
- c++指针学习笔记--交换两个字符串数据
- LPCTSTR数据类型
- Show一下Rails结合Ext的成果 :)