1:
if lngA>lngB then
lngC=lngA-lngB
else
lngC=0
end if
2:
lngC=0
if lngA>lngB then
lngC=lngA-lngB
end if
哪位能告诉我,一个if分支的花费和一个简单类型的赋值语句的花费分别是多少?第一种情况,编译器会如何处理?
if lngA>lngB then
lngC=lngA-lngB
else
lngC=0
end if
2:
lngC=0
if lngA>lngB then
lngC=lngA-lngB
end if
哪位能告诉我,一个if分支的花费和一个简单类型的赋值语句的花费分别是多少?第一种情况,编译器会如何处理?
解决方案 »
- 跪求指点
- 在字符串中搜索符合条件的
- 如何获取用户正在浏览的网页url
- 想知道这些常量的意义
- VB怎樣調用Windows XP缺省看圖片的工具(Windows Picture and Fax Viewer)來打開圖形文件(*.ICO;*.JPG;*.BMP)?
- Text控件字符长度问题
- 关于SOAP ,Activex,和JAVA的问题? (在线等待)
- 现场等待....关于ActiveX控件的问题!
- 请问各位大虾,哪位能告诉我在Visual Basic中该如何控制Word的系统菜单?最好能有个例子。
- 如何判断用户正在关机或正在重启?
- 请大家照顾一下我们这些刚入道的小朋友们好吗?我们问个小问题每次在第2天才有人回答真是伤透了心呢。
- ImageCombo如何禁止光标
lngC=0
if lngA> lngB then
lngC=lngA-lngB
end if
这样比较合理
lngC = Iif(lngA > lngB, lngA - lngB, 0)
这样更好
if lngA> lngB then lngC=lngA-lngB
lngC = iif(lngA > lngB, lngA - lngB, 0)
简单明了。
讨论这两种性能,没必要。
lngC=lngA-lngB
else
lngC=0
end if
两个变量比较大小的系统消耗和两个变量的减法差不多。进行了一次比较之后再进行运算,这样进行了两次运算。
我的想法是lngC=lngA-lngB
if lngC<0 then lngC=0一次减法运算反正是不可避免的。变量与0的比较只需要判定最高位,记得CPU 的FLAGS寄存器中有一位是专门标志EAX寄存器重最高位的。还有一条专门的跳转指令与之对应只需要一个cpu周期,所以如果编译器优化得好的话我的算法应该比楼主的那两种方式效率都高那么一点点。
汇编的东西都忘光了,如果说得不对不要责怪
2:
lngC=0
if lngA>lngB then
lngC=lngA-lngB
end if