從技術上講,重用變量會(不顯着)更快。儘管如此,它將在可衡量的表現上實現零差。
儘管硬件越來越便宜,而且數小時也變得越來越昂貴,您應該更願意擁有可維護的代碼。從長遠來看,這將爲你自己節省頭痛和貴公司的資金。
只有在可以獲得足夠的性能收益以抵消所投入的工作量(金錢)的情況下才能進行優化。
如今雲和服務器集羣,一個位不太優化的代碼將最有可能不作出最終較慢的項目。您的項目運行速度可能會更快,但會花費更多的CPU週期,因此您的託管服務提供商將花費更多的錢。儘管如此,這個小額增加的成本很可能不會考慮幾個小時的性能增益優化。當然,除非你正在問這個,因爲你正在爲亞馬遜開發。 (甚至在像亞馬遜這樣的地方,每天點擊數百萬和數百萬點擊,重複使用變量不會導致任何明顯的性能增益)
回到您的問題;我相信你只應該重用一個變量,當它將保存原始狀態的更新內容。但總的來說,這並不會發生太多。
我認爲,在下列情況下,重用$content
變種是合乎邏輯的選擇,使
function getContent()
{
$cacheId = 'someUniqueCacheIdSoItDoesNotTriggerANotice';
$content = someCacheLoadingCall($cacheId);
if (null === $content) {
$content = someContentGeneratingFunction();
someCacheSavingCall($cacheId, $content);
}
return $content;
}
描述代碼
另外,請善待你的未來的自己總是使用描述您的變量的名稱。你會爲此感謝你。當你與自己達成協議時,除非從邏輯上講有意義,否則不會重用變量,你已經向可維護代碼邁出了又一步。
想象一下,從現在起6個月內,在完成另一個大型項目或更小的項目之後,您會收到一位重要客戶的電話,指出舊項目中存在一個錯誤。聖!@#!現在就解決這個問題! 你開放,看到這樣的功能無處不在;
function gC()
{
$cI = 'someUniqueCacheIdSoItDoesNotTriggerANotice';
$c = sclc($cI);
if (null === $c) {
$c = scg_f();
scsc($cI, $c);
}
return $c;
}
好得多使用描述變量和函數名,並獲得一個代碼編輯器良好代碼完成,所以你還在編碼一樣快,你想要的。現在,我會推薦Aptana Studio或Zend Studio,Zend的代碼更好一點,但Aptana已經證明更穩定。
PS。我不知道你的編程水平,對不起,如果我嘮叨太多。如果與你無關,我希望能幫助其他人閱讀此:) :)
[早熟優化...](http://c2.com/cgi/wiki?PrematureOptimization) –
使用新/重新使用退出變量對代碼的性能沒有可衡量的影響。在思考如何命名變量時重點關注是錯誤的。這不是如何進行優化......如果您擔心無法量化的週期數量,您將會以這種或那種方式進行存儲,您將錯過實際重要的優化,比如選擇正確的算法。 – meagar
在你的例子中,'$ var2 = //一些瘋狂的大型數據庫查詢結果':在這個語句中,「瘋狂的大型數據庫查詢」比爲一個新變量分配空間要貴上萬倍。這絕對不是與優化軟件相關的東西。優化變量分配花費的時間不會花費5分鐘來優化大型查詢。 – meagar