语句的效率问题。

mercury1231 2003-05-31 07:39:10
大量的情况下,

switch和if那个效率高?

for和while那个效率高?

无聊问题,不要拍砖:)
...全文
76 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
spiderbat 2003-06-01
  • 打赏
  • 举报
回复
我觉得问效率问题,不太妥,因为他们的效率是由不同的编译起来定的,但是算法是很有用的,就是算法的效率问题!
BinaryWorld 2003-06-01
  • 打赏
  • 举报
回复
switch 和 if的效率不是自己的问题是算法设计的问题。

如果你学习过算法分析,下面的你一定不会陌生。

if(nScore>100)
printf(">100 %d",nScore);
else if(nScore>90 && nScore<100)
printf(">90<100 %d",nScore);
else
printf("<90 %d",nScore);

nScore如果大于100,只会比较一次,在90和100之间会比较3次,在小于90会比较3次。

平常我们不注意这些因为我们不会处理数据量很大的现象。
当你数据梁很大的时候就例外了,如果100000个数据,其中的80%都是<100并且>90的,那么会比较100000*80%*3,如果修改一下就成了将其前止就会是2次了。

呵呵,不过良好的编程习惯会告诉你。这样写的效果更好:
if(nScore>100)
printf(">100 %d",nScore);
else if(nScore>90)
printf(">90<100 %d",nScore);
else
printf("<90 %d",nScore);

根据你的处理情况。

良好的编程风格对于数据运算量很小的程序没有太大的帮助,最多增加可读性。
当对于数据两很大程序就会很大程度上提高程序的效率和运行速度。
mercury1231 2003-06-01
  • 打赏
  • 举报
回复
呵呵,开眼界,这么多种说法。

我主要是想知道背后的原理,不是简单做个试验。

比较的基础就是基本算法和背景都差不多。
idontlikenickname 2003-06-01
  • 打赏
  • 举报
回复
while比for效率高,写段代码,反汇编一下就知道了.
windbells 2003-06-01
  • 打赏
  • 举报
回复
if比switch高一点
因为switch要比if多了一句取址和一句付值的操作。

for和while差不多,关键看你表达式是什么样子
DragonFly-9 2003-06-01
  • 打赏
  • 举报
回复
语句都是砖头
不同人砌的墙(算法)就不一样
不同的地方用不同的砖头有讲究的

好了,这些砖头够砸死你了,哈哈
pzytony 2003-06-01
  • 打赏
  • 举报
回复

差不多!!!!
billwolf4 2003-05-31
  • 打赏
  • 举报
回复
switch和if那个效率高?
for和while那个效率高?
用处不一样
dragonlw 2003-05-31
  • 打赏
  • 举报
回复
试试从编译原理的语义分析,中间代码优化那个角度分析分析
把他们写成三元式,或则间接三元式

popufig 2003-05-31
  • 打赏
  • 举报
回复
再次友情UP
yonk 2003-05-31
  • 打赏
  • 举报
回复
自己试试。我真的很建议自己去摸索着试试,可以解决的事情吗。
yanwei01cn 2003-05-31
  • 打赏
  • 举报
回复
up
popufig 2003-05-31
  • 打赏
  • 举报
回复
up

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧