c#一个方法中几个if语句影响了效率?

yangquanlaohou 2010-11-07 11:10:16
一个方法中, 其它都执行挺好,可加了下面几个句子后运行时和蜗牛差不多,什么原因呀,请教老师前辈。
我试了下,弄成一个if效率也是低下。不知是什么原因?

if (index < 30)
{
arrangetime[index] = 1
roomtable[roomno, index] = 1
}
if (num2 < 30)
{
arrangetime[num2] = 1;
roomtable[roomno, num2] = 1;
}
if (num3 < 30)
{
arrangetime[num3] = 1;
roomtable[roomno, num3] = 1;

}
if (index4 < 30)
{
arrangetime[index4] = 1;
roomtable[roomno, index4] = 1;
}
if (index5 < 30)
{
arrangetime[index5] = 1;
roomtable[roomno, index5] = 1;
}
if (index6 < 30)
{
arrangetime[index6] = 1;
roomtable[roomno, index6] = 1;
}
if (index7 < 30)
{
arrangetime[index7] = 1;
roomtable[roomno, index7] = 1;
}
...全文
840 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
话说我遇到了与楼主一样的问题,一条if语句,竟然大大的影响了速度。不知道这是什么原因。。。
yangquanlaohou 2010-11-09
  • 打赏
  • 举报
回复
还是没解决,顶起来
yangquanlaohou 2010-11-09
  • 打赏
  • 举报
回复
又试了下
除了赋值1外都是飞快的.唯独赋值1运行很慢.
奇怪呀奇怪.
yangquanlaohou 2010-11-09
  • 打赏
  • 举报
回复
roomtable初始化为0,
再赋值时
roomtable[roomno, index]=0;//不影响效率,飞快
roomtable[roomno, index]=1;//影响效率,蜗牛一样
到底是什么原因呢?

int64 2010-11-08
  • 打赏
  • 举报
回复
这几个if肯定不会有大的影响的,还是其他原因造成的
phil999 2010-11-08
  • 打赏
  • 举报
回复
如果 arrangetime 和 roomtable 是数组的话,那么就不是 if 造成的。或者有些代码楼主没有贴上来
kentxjzhou 2010-11-08
  • 打赏
  • 举报
回复
这个你加几个else 试试!
构成if ...else
对这个我不太懂,但我写计算器的时候也遇到你这样的问题。我就想着,会不会是太多的如果没有结束而导致运行过多!
我就加了几个else,感觉好多了!(不知道是不是心理的问题,你也试试)
一起学习!
showjim 2010-11-08
  • 打赏
  • 举报
回复
程序慢应该与这段程序无关,除非这段程序被调用的频率超级高,如果是需要所定,那也没办法了。
我觉得应该逻辑的问题吧,这段程序的赋值操作影响到了别的程序的逻辑条件判断(应该是影响到了其它循环程序段)。
wdywqc 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lishenghu365 的回复:]
换成Switch case试试
[/Quote]
Switch case ???
你开玩笑吧,if else 的是后用这个还车不多,
他这个是单独的if语句,有可能多个if同时运行了呢?
zhang00001230 2010-11-08
  • 打赏
  • 举报
回复
arrangetime[index7] = 1;
roomtable[roomno, index7] = 1;

如果不是这两个数据问题的话 那就比较麻烦了。
你给if(){}后加个else if(){}这样试试看吧!
if()一般是不占内存的。
honkerhero 2010-11-08
  • 打赏
  • 举报
回复
arrangetime[index7] = 1;
roomtable[roomno, index7] = 1;把他们的定义贴出来看看,还有你有没有用其它的东西,比如多线程,锁之类的
李先生2017 2010-11-08
  • 打赏
  • 举报
回复
换成Switch case试试
mjp1234airen4385 2010-11-08
  • 打赏
  • 举报
回复
貌似不会影响太大的效率。
yangquanlaohou 2010-11-08
  • 打赏
  • 举报
回复
引用 2 楼 wuyazhe 的回复:

arrangetime[index] = 1
roomtable[roomno, index] = 1

这是两个数组,只不过判断给他赋值而已.
yangquanlaohou 2010-11-08
  • 打赏
  • 举报
回复
C#.莫X老师:
详细说说,如何解决?
mohugomohu 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyazhe 的回复:]

arrangetime[index] = 1
roomtable[roomno, index] = 1
应该是这2个对象类型的索引器写的有问题。
[/Quote]对
mohugomohu 2010-11-08
  • 打赏
  • 举报
回复
if本身并不占用什么资源,你还是检查一下在if的判断操作里面做了些什么吧
huwen7565833 2010-11-08
  • 打赏
  • 举报
回复
假设你的 arrangetime, roomtable 是全局的
写一个函数试试:
void test ( int operand )
{
if (operand < 30)
{
arrangetime[operand] = 1;
roomtable[roomno, operand] = 1;
}
}

yangquanlaohou 2010-11-08
  • 打赏
  • 举报
回复
现在主要是
去了这几行,是很快的,不去掉是很慢的
可是又不能去掉

loveSoftandhxy 2010-11-08
  • 打赏
  • 举报
回复
其实跟IF关系不大。。。你完全可以做个小测试。
相同的IF条件数量,里面的语句都改成简单的赋值等。比如int a=0;等,肯定不会慢。。。

所以说是当某个条件满足时,里面的roomtable[roomno, index]造成。

首先还是要看看roomtable[roomno, index]做了什么
加载更多回复(10)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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