2011年9月29日 星期四

[轉錄] PHP - if v.s. switch 誰快?

fluffycat 上看到一篇測試 PHP 的 if 和 switch 判斷式哪個執行速度較快,根據作者使用亂數測試的結果是 if 略勝 switch,但差距並不明顯。雖然程式碼亂數只取到 5,但下面有網友幫忙測試了亂數 10、20 和 50,得到的結果還是 if 略勝。

小小的測試,小小的趣味。

原始碼:下載

//copyright Lawrence Truett and FluffyCat.com 2009, all rights reserved
  	define('BR', '<'.'BR'.'>');
	echo 'Performance Testing PHP if / else VS switch with 100,000 iterations'.BR.BR;
	
	$ifTime = 0;
	$switchTime = 0;
	for ($x = 0; $x < 100000; $x++) {
		$oneToFive = rand(1,5);
		if (0 == fmod($x,2)) {
			$switchTime = $switchTime + testSwitch($oneToFive);
			$ifTime = $ifTime + testIf($oneToFive);
		} else {
			$ifTime = $ifTime + testIf($oneToFive);  			
			$switchTime = $switchTime + testSwitch($oneToFive);  		
		}
	}
	echo 'total if / else time: '.$ifTime.BR;
	echo 'total case time: '.$switchTime.BR;
	echo BR;
	if ($ifTime > $switchTime) {
		echo 'switch is quicker by '.($ifTime - $switchTime).BR;
	} else {
		echo 'if / else is quicker by '.($switchTime - $ifTime).BR;		
	}


	function testSwitch($oneToFive) {
		$time_start = microtime(true);
		switch($oneToFive) {
			case 1: $z = 1; break;
			case 2: $z = 2; break;
			case 3: $z = 3; break;
			case 4: $z = 4; break;
			case 5: $z = 5; break;						
		}
		$time_end = microtime(true);
		$time = $time_end - $time_start;
		return $time;
	}
  
	function testIf($oneToFive) {
		$time_start = microtime(true);
		if (1 == $oneToFive) {
			$z = 1;
		} elseif(2 == $oneToFive) {
			$z = 2;			
		} elseif(3 == $oneToFive) {
			$z = 3;	
		} elseif(4 == $oneToFive) {
			$z = 4;	
		} elseif(5 == $oneToFive) {
			$z = 5;	
		}
		$time_end = microtime(true);
		$time = $time_end - $time_start;
		return $time;
	}



參考資料:http://www.fluffycat.com/PHP-Design-Patterns/PHP-Performance-Tuning-if-VS-switch/


2011年9月28日 星期三

PHP 5.4 beta1 發佈

PHP 5.4 beta1 發佈了!!!

增加了一些新功能和移除部分過時的行為,主要做了三項變動:

  1. 增加可呼叫的 type hint。
  2. 移除自動辨識時區演算法,改用 UTC 為預設。
  3. 使用 mysqlnd 為預設來取代掉 mysql、mysqli 和 pdo_mysql。


原文:

  • Added callable typehint.
  • Removed the timezone guessing algorithm. "UTC" is now used in case the timezone is not set.
  • The mysql, mysqli and pdo_mysql extensions now use mysqlnd by default.

參考資料:http://www.php.net/archive/2011.php#id2011-09-27-1


2011年9月27日 星期二

Facebook 新功能 - 翻譯

今天再逛 Facebook 的時候,忽然發現它有翻譯的功能,似乎是不久前才出現的!

如下圖,在留言旁邊出現了"翻譯"的字樣。


按下翻譯之後,僅限塗鴉牆上的文字會被立即翻譯,不包含分享的內容。翻譯字樣則會變成"原文"。 

目前還不知道背後是透過什麼來進行翻譯。不過,在實用性上我覺得多多少少對用戶都有些幫助!像是一些韓國偶像團體的粉絲網頁,就可以透過這個功能來直接翻譯原文,不用再額外透過一些翻譯軟體就能得知心愛的偶像的動態喔~


2011年6月6日 星期一

守護程序 I 網路殺神



上次趁著返台的時候買了這本書 守護程序 I 網路殺神,主要是用來打發當兵苦悶的時間。由於平常沒有看小說的習慣,會挑上這本小說完全純屬意外,無意間被書籍介紹所吸引的,到底是什麼樣的書會讓每個電腦使用者無法停手?我的好奇心就驅使了我買下這本書。

2010年10月21日 星期四

Razer Abyssus 地獄狂蛇 不專業評測

Razer 這家公司是專門製作電競相關的配備,包括滑鼠、鍵盤和耳機等等。它有名的程度我想大家應該都知道,甚至找電競選手來代言產品,在此我就不再特別贅述。














開始進入這次要介紹的主角!就是受到許多玩家愛戴的 Razer Abyssus 地獄狂蛇,這隻滑鼠訴求的重點在於回歸基本,按鍵的設計非常的簡單,只有左、右鍵和滾輪。








但是,在這樣簡單的按鍵設計下,它本身所擁有的特色卻一點也不遜色,擁有 3.5G 的紅外線感應、125及1000Hz的更新頻率和高達3500的DPI。另外,更新頻率和DPI的調校在滑鼠底部就可以直接完成,不需藉由安裝驅動程式來進行調整。








這支地獄狂蛇在前陣子有一次優惠活動,就是配上巨甲蟲滑鼠墊的套餐,只要 NT.990,可惜那波優惠我沒有跟到。慶幸的是這組套餐優惠的活動又開始了,前一批特價活動沒跟到,這次就趕緊下訂單來好好的搞賞一下自己,順便看看自己的星海會不會變強一點。


使用心得:
由於第一次使用電競滑鼠,說真的,舒適度和準度是以前的滑鼠完全無法比擬的。剛剛也稍微打了場星海,除了有種新舊鼠型不同的不適感外,整個就是順暢而已,沒話說。不過也聽說Razer鼠有連點的通病,希望我的地獄狂蛇不要太早出現這問題才好!


下面就看看我這不專業的開箱文了:

包裹收到囉~只能說包的真是簡潔有力啊!














今天的主角登場了!地獄狂蛇+巨甲蟲鼠墊套餐,
我個人覺得CP值很高!














終於露臉囉!這精美的包裝,有種說不出的爽感~











包裝背後附上的產品保證卡












打開包裝後竟然有個小紙袋,會有甚麼驚喜呢?














原來是產品型錄和說明書














卸下塑膠殼了~露出她那頗有質感的表面~













底部還有保護膜貼著














更新頻率和DPI的調整鈕













巨甲蟲滑鼠墊也登場了!包裝上還有代言人~











一起合照













和即將退役的不知名羅技滑鼠合照












噹噹!地獄狂蛇啟動!盡情的發光發亮吧!