程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP關於傳眾多參數還是傳上下文對象的性能測試

PHP關於傳眾多參數還是傳上下文對象的性能測試

編輯:關於PHP編程

  在開發微信公眾平台平台的過程中,有這麼幾個參數總是需要傳來傳去,$userOpenId,$message,$time。

  在整個程序的運行過程中,為了函數方便的處理,將這三個變量一直放在參數列表裡。關於這點,我突然聯想到在Android裡面,總是有一個Context(上下文)對象傳來傳去的,現在我的理解是,Context裡面存放了一些必要的數據,在整個程序執行的邏輯中都有可能被使用。

  因此,我就思考了一下,我這個三個變量要不要包裝成Context呢?性能上會不會有提升?

  PHP的函數參數如果是變量的話,都是直接傳變量的拷貝,如果是傳對象的話,是傳對象的指針。也就是說,如果定義了一個String,放到一個函數裡去修改,如果不以返回值的形式返回的話,該變量沒有被修改,被修改的是該變量的一個拷貝。如果是定義一個對象放到函數中去操作,修改的直接就是這個對象本身。

  由上面的思考,我認為如果傳對象的話,可能會更快一點(因為不需要復制)。於是,我寫了如下代碼來測試。

<?
 = 
 = "abcdefghijk" = "我想要查詢什麼" = 
 =  Context(, , 
 = 5000 ( = 1;  <= ; ++
    handleMessageByObject(
 = 
 "cast:".( - 
 handleMessageByParams(, ,  "working......["...."]\n"

 handleMessageByObject( "working......[".->userOpenId.->message.->."]\n"

  =   =   =   __construct(, , ->userOpenId = ->message = -> = ?>

  測試的結果我已經在注釋中寫出,單位是ms(毫秒)。可見,傳Context反而變慢了一點。當然,考慮到這個上下文的環境也不可能在一次代碼中傳來傳去傳5000次,而且性能差異也是非常小的毫秒級,所以,使用上下文對象來傳遞必須的參數是一個更優雅的選擇。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved