首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

同機房 APC 與 Memcached 效能實測:APC 讀寫快 2 倍

     編輯:PHP 綜合知識

測試背景

比較同一台伺服器上 APC(Alternative PHP Cache)與 Memcached 的讀寫效能。APC 為本機共享記憶體,Memcached 需經網路協議(即使 localhost 仍有 TCP 開銷)。

測試程式碼核心

$memcachehost = 'localhost';
$memcacheport = 11211;

function microtime_float() {
    list($usec, $sec) = explode(" ", microtime());
    return (float)$usec + (float)$sec;
}

function runtime($t1) {
    return number_format((microtime_float() - $t1) * 1000, 4) . 'ms';
}

// APC 讀寫
$t1 = microtime_float();
$arrs = apc_fetch($key);
echo "APC_read=====" . runtime($t1);

$t1 = microtime_float();
apc_store($key . '_test', $arrs, 30);
echo "APC_write=====" . runtime($t1);

// Memcached 連線、讀寫
$t1 = microtime_float();
$mem = new Memcache;
$mem->connect($memcachehost, $memcacheport);
echo "MEM_connet=====" . runtime($t1);

$t1 = microtime_float();
$arrs = $mem->get($key);
echo "MEM_read=====" . runtime($t1);

$t1 = microtime_float();
$mem->set($key . '_test', $arrs, 0, 30);
echo "MEM_write=====" . runtime($t1);

實測結果(Linux 環境)

操作耗時 (ms)
APC_read0.0520
APC_write0.0489
MEM_connect0.0501
MEM_read0.1030
MEM_write0.0801

結論分析

  • 不計連線時間:APC 讀寫約為 Memcached 的 1/2(快 2 倍)。
  • 含連線時間:Memcached 每次請求需建立 TCP 連線,總耗時約為 APC 的 2~3 倍。
  • APC 双重優勢:同時提供 Opcode 快取(編譯緩存)與 User Cache(資料緩存),一舉兩得。

架構選型建議

補充說明

  • 測試使用 microtime_float() 而非 microtime(true),屬筆者早期習慣,實際建議用內建參數。
  • Windows 環境結果參考性低(進程模型不同),生產環境以 Linux 為準。
  • 跨機房使用 Memcached 必須走內網,公網延遲極高且頻寬雙倍消耗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景建議方案理由
單機、中小型專案APC / APCu零網路開銷、安裝簡單、雙重功能
多機分散式、需共享緩存Memcached / Redis跨伺服器共享、支援叢集、持久化選項
未來擴充性優先直接上 Redis功能豐富(資料結構、發布訂閱、Lua 腳本)、社群活躍