作者star508 (star)
看板PHP
标题[请益] php使用回圈的效率
时间Wed Jun 25 22:51:19 2008
今天有碰到一个问题,不知道有没有人可以帮我解惑?
有一个抽奖活动,共有九个奖项个别有设定好抽奖的机率,
我是取一到一千的乱数,依照取得的乱数决定奖项,程式码如下:
//九个奖项从第一奖到第九奖机率为2%,10%,15%,0.3%,0.7%,2%,10%,20%,40%
$prizeRange=array{0,20,100,150,3,7,20,100,200,400};
$randNo=mt_rand(1,1000);//从一到一千随机取出一数字
$prizeNo=0;//从下方程式判断得第几奖
//方法一(慢)
while($randNo>0){$randNo-=$prizeRang[$prizeNo+1];$prizeNo++;}
//方法二(快)
for($i=1;$i<count($prizeRange);$i++}
{
$randNo=$randNo-$prizeRange[$i];
if ($randNo<=0) {$prizeNo=$i;break;}
}
//
本来是用第一种方法,但是实际放上server执行时发现执行速度超慢,还会出现超过
超过30秒没回应的error,
後来改成第二种方法让回圈有实际的次数去跑,结果速度差很多,就算再写个for回圈
跑个2000次也是一开网页就有执行结果,不知道到底为何结果差这麽多,照理说回圈
执行的次数应该差不多啊,不知道有没有人可以帮我解答,Tks!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.120.7.108
1F:推 jimwayne123 :真的次数一样吗?丢个flag看看第一个回圈的状态吧? 06/26 00:32
2F:推 arrack :方法一的阵列有错 少一个e 06/26 01:04
3F:→ starjou :array( ...... ) 你的 code 不是从你的程式直接 copy 06/26 01:17
4F:→ starjou :过来的,搞不好你的程式有什麽小错变成无穷回圈 06/26 01:17
5F:→ starjou :上面的 code 把变数名称错跟 array 後面的括号改掉之 06/26 01:18
6F:→ starjou :後执行起来蛮正常的 06/26 01:18
7F:→ JoeHorn :去算算 Big-O 吧.... 差很多哦... 06/26 02:13