程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP與Perl操作Memcached速度差異比較

PHP與Perl操作Memcached速度差異比較

編輯:關於PHP編程

由於最近在進行memcached方面的工作

在性能測試中使用了php以及perl對memcached進行操作結果發現php與perl對memcached操作的性能差異大約在40~50%之間

以下是測試腳本,所作的操作一樣.使用1k的數據重復512000次.,總共插入memcached 500M的數據

php操作腳本

<?php
ini_set("memcache.hash_function","crc32");
$memcache=newMemcache;
$memcache->addServer(localhost,30001);
$memcache->flush();
for($i=0;$i<512000;$i++){
        $memcache->set($i,
"共1k的填充數據",0,1000);
}
?>
接著是perl腳本

#!/usr/bin/perl
use Cache::Memcached();
$memcache=newCache::Memcached{servers=>["localhost:30001"]};
$memcache->flush_all();
for($i=0;$i<512000;$i++){
    $memcache->set($i,
"共1k的填充數據");
}
$memcache->disconnect_all();
從代碼行數上來看.兩者也幾近一致
但是測試結果卻是大相徑庭
我們在linux下使用time對執行進行計時
3次執行結果如下

[root@lenovo5 ~]# time ./test1k.pl
real    1m2.265s
user    0m36.427s
sys     0m17.114s
[root@lenovo5 ~]# time ./test1k.pl
real    1m2.814s
user    0m36.380s
sys     0m17.463s
[root@lenovo5 ~]# time ./test1k.pl
real    1m13.684s
user    0m44.603s
sys     0m18.366s
[root@lenovo5 ~]# time php ./test1k.php
real    0m38.055s
user    0m11.768s
sys     0m13.891s
[root@lenovo5 ~]# time php ./test1k.php
real    0m38.892s
user    0m12.416s
sys     0m14.044s
[root@lenovo5 ~]# time php ./test1k.php
real    0m38.955s
user    0m12.430s
sys     0m13.088s
差異很明顯.perl執行需要1分左右而php只需要40秒不到,就是php的執行比perl的大約快40%

分析之後有幾個因素的可能

1.perl的字串處理速度較慢.我們看到perl版本的set中不需要加入長度參數.這樣每次插入可能都會需要set函數去判斷傳入的字串長度.這樣可能較慢.但是隨後我們發現php的set雖然有長度參數.但是這個參數並非是強制性的.比如我參數寫了1000,實際字串有1200.結果將會是插入 1200長度的字串,而並沒有截斷.所以這一點不是非常站得住腳

2.perl的擴展與php擴展實現方式不同.php的memcache客戶端是PECL.也就是C擴展,而perl的擴展實現很有可能還是perl.所以會有性能差異。

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