[分享]函式運作速度比較:資料彈出篇

WOG設定安裝教學

版主: 涅魂, 簫哥


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

[分享]函式運作速度比較:資料彈出篇

文章涅魂 » 2007-02-14 4:49 pm

這篇的用意是比較兩個函式的運作速度比較

其中的function2()類似於wog_item_tool.php內的item_out()的內容(省略其他驗證的步驟等等)

函式1是利用串列的方式來處理陣列,函式2則是WOG中所用的處理方式

以下為兩個函式的程式碼
代碼: 選擇全部
function function_1($id,$num=1)
{
   $item=unserialize('a:2:{i:1;i:2000;i:15;i:2;}');
   if(!in_array($id,$item))
   {
      
   }
   $item[$id]-=1;
   $item=serialize($item);
   return $item;
}
function function_2($id,$num=1)
{
   $item=explode(',','1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,15,15');
   $item2=array();
   $chk=false;
   for($i=0;$i < count($item);$i++)
   {
      if($item[$i] == $id && $chk==false)
      {
         $chk=true;
         continue;
      }
      else
      $item2[]=$item[$i];
   }
   if($chk == false)
   {
      
   }
   return $item2;
}

運作速度比較 寫:以下為運作20次後的比較結果,列出5篇
代碼: 選擇全部
function 1 process time:0.00026599999999999 sec.
function 2 process time:0.001874 sec.
function 2 is Slower than function 1 over [color=red]-604.51127819554[/color] %

代碼: 選擇全部
function 1 process time:0.00026799999999999 sec.
function 2 process time:0.001859 sec.
function 2 is Slower than function 1 over [color=red]-593.65671641793[/color] %

代碼: 選擇全部
function 1 process time:0.00026500000000002 sec.
function 2 process time:0.001868 sec.
function 2 is Slower than function 1 over [color=red]-604.90566037733[/color] %

代碼: 選擇全部
function 1 process time:0.00026499999999996 sec.
function 2 process time:0.0018560000000001 sec.
function 2 is Slower than function 1 over [color=red]-600.3773584907[/color] %

代碼: 選擇全部
function 1 process time:0.000267 sec.
function 2 process time:0.001857 sec.
function 2 is Slower than function 1 over -595.50561797752 %

個人評論 寫:從上面的運作結果可以知道函式1遠比函式2要快得多,即使陣列只有兩個元素 函式1仍然比函式2快些
代碼: 選擇全部
function 1 process time:0.00026400000000004 sec.
function 2 process time:0.00031199999999998 sec.
function 2 is Slower than function 1 over -18.181818181791 %

其中,函式1的優勢在於不會隨著元素數量的增加而逐漸減慢速度
舉個例子來看
情況1:有2個ID:5跟3個ID:15,送入函式1與函式2後的運作結果如下(皆以重複運算20次為準)
代碼: 選擇全部
function 1 process time:0.00025500000000001 sec.
function 2 process time:0.000525 sec.
function 2 is Slower than function 1 over -105.88235294117 %

情況2:有5個ID:5與7個ID:15,再送入函式1與函式2後的運算結果如下
代碼: 選擇全部
function 1 process time:0.00025700000000001 sec.
function 2 process time:0.001071 sec.
function 2 is Slower than function 1 over -316.73151750971 %

從這兩個比較可以發現,在情況1與情況2下函式1的運算速度幾乎沒有影響
函式2則會隨著數量的增加而增加運算的時間,而運算時間與數量幾乎成正比
且若以函式一的方式來運作的話,即使內容包含二維以上陣列也很方便
我覺得改用這種處理方式的話可以讓玩家的裝備有不一樣的選擇,希望ET大可以考慮看看 :)
[point="簫哥"]<u>積分 +5</u>

涅魂做很棒程式碼!

at 2007-02-19 8:18 pm[/point]


圖檔


ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

文章ETERNAL » 2007-02-15 1:24 pm

謝謝提供資訊

沒使用過unserialize及serialize,不知這兩各函數是什麼東西 :oops:

in_array是好用的東西,應該是in_array讓速度加快不少

該把WOG裡面一些老式的寫法改善一下了 :lol:


水色論壇 http://www.et99.net
簡恩峻分享


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2007-02-15 3:44 pm

我也是最近才知道有這兩個函式,測試後發現這個函式可能蠻適合WOG使用的(陣列處理方面)

最近在找有沒有方法可以讓WOG運作更快、更省資源,若有發現的話再向您報告囉 :D


圖檔


ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

文章ETERNAL » 2007-02-15 4:00 pm

涅魂 寫:我也是最近才知道有這兩個函式,測試後發現這個函式可能蠻適合WOG使用的(陣列處理方面)

最近在找有沒有方法可以讓WOG運作更快、更省資源,若有發現的話再向您報告囉 :D


ok 謝謝拉 :lol:

幫助真大,線上人數也可以提昇不少 哈哈


水色論壇 http://www.et99.net
簡恩峻分享

頭像
齋月
 
文章: 557
註冊時間: 2006-02-27 7:54 am

文章齋月 » 2007-02-15 5:16 pm

功力太弱 看的頭暈暈腦脹脹 還是看不懂其中奧妙 o.O

我的函式沒有基礎可言阿 XDD




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2007-02-15 5:19 pm

哪邊看不懂?歡迎提問

只要是我答得出來的問題我很樂意幫您解答 :lol:


圖檔

逍遙亂舞
 
文章: 65
註冊時間: 2006-06-28 2:30 pm
來自: 宇宙

文章逍遙亂舞 » 2007-02-15 6:20 pm

才剛剛學習PHP,完全看不懂啊

PS.請問有沒有一些好的PHP教學網站?


正在慢慢的吸收PHP知識,如果發現有甚麼好的教學網站,請介紹給我,謝謝!


星戰風雲Online 已完成60%


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2007-02-15 6:34 pm

學習PHP的網站…因為我都是買書來看的,所以很少去網路上找PHP的教學呢

目前手邊也只有http://php.net而已,如果看得懂的話強力推薦您瀏覽這個網站 :wink:


圖檔

頭像
齋月
 
文章: 557
註冊時間: 2006-02-27 7:54 am

文章齋月 » 2007-02-17 6:58 am

我記得 好像是 item_out 還是 item_check 的程式碼

都是註解掉的呢...不知道那是有什麼功用?

剛剛要找又找不到在哪了 *_*




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2007-02-18 9:54 am

該段程式在wog_act.php內,有什麼問題嗎? :roll:


圖檔


回到 精華區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客