select case VAR
case a
... (1)
case b
...
case c
...
case deafult
...
end select
在汇编代码中等同
if VAR=a then
... (1)
elseif VAR=b then
...
elseif VAR=c then
...
else
...
endif
如果你写过汇编代码就知道程序的流程了
2者效率一样
对于概率大的数应该放到第一位
我原来有段程序是在select case 中,不过为求省事没用变量,而用文本框中的数据直接转换累加的:如:text(0).text=val(text(0).text)+1 结果效率极低!就算效率低也可以忍受,但我发现这样居然会影响我的串口通讯(接收数据),所以以后就特别重视程序的执行效率。
谢谢各位,我想我已经知道该用什么了!
不要太钻牛角尖,select语句编译成机器语言后同样也是用if的形式去判断。不过现在的像VB这样的编译器对代码都会作一定程度上的优化,所以,我想你的性能不会受到什么影响。需要注意的是类似这样的情况:我以前一个程序中,需要在一个大数组里寻找连续的几个数,作为数据的开头,标准的原型应该是这样的,
for i=0 to ubound(b)-4 'b是一个byte型的数组
if b(i)=1 and b(i+1)=2 and b(i+3)=3 and b(i+4)=4 then
msgbox "Found!!!"
end if
next i
但是我发现这样的写法效率非常低,我改用了下面的写法:
for i=0 to ubound(b)-4
if b(i)=1 then
if b(i+1)=2 then
if b(i+3)=3 then
if b(i+4)=4 then
msgbox "found!!!"
endif
endif
endif
endif
next i
结果效率的提升是非常明显的。但我这样作的前提是,数组b是比较大的,比如上千,如果b中仅保存几百甚至几十的话,那还不如采用第一种写法,因为读起来至少好一些,而效率也不会有非常大的影响。