STL map 、PHP HashTable、hash_map 性能比較


          結果是 hash_map 性能遠勝 PHP HashTable、PHP HashTable 性能明顯優於 STL Map。(所有結果都在一臺系統是Windows XP、編譯器是Visual Studio 2008、PHP版本是 5.2.14的機器上做的)

         詳細結果如下(容器類都含有 10000 條數據,均執行 10000 填充、20000000 次查找操作)
         PS:PHP的HashTable是預先分配大小,無法自動增長的。另外2個是自動增長的。

         STL Map:41.1736359596 秒
         PHP HashTable: 8.20506501198 秒
         hash_map: 0.0426259040833 秒

         另外,map 以及 hash_map 的均爲MS實現,不代表在其它平臺上的結果。 測試的源代碼如下:






執行入口:

多次執行:

42.4845600128
8.30684089661
0.0404770374298

 




 

41.8795220852
8.63965702057
0.0418040752411






二:怎麼把ThinkPHP的RBAC應用到整個項目

新建一個BaseAction.class.php
function _initialize() {
  header('Content-Type:text/html;charset=utf-8');
        // 用戶權限檢查
        if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
            import('ORG.Util.RBAC');
            if (!RBAC::AccessDecision()) {
                //檢查認證識別號
                if (!$_SESSION [C('USER_AUTH_KEY')]) {
                    //跳轉到認證網關
                    redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
                }
                // 沒有權限 拋出錯誤
                if (C('RBAC_ERROR_PAGE')) {
                    // 定義權限錯誤頁面
                    redirect(C('RBAC_ERROR_PAGE'));
                } else {
                    if (C('GUEST_AUTH_ON')) {
                        $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                    }
                    // 提示錯誤信息
                    $this->error(L('_VALID_ACCESS_'));
                }
            }
        }
 
讓所有的action都繼承這個。
class IndexAction extends BaseAction{

三:函數相集合

定義和用法

strrchr() 函數查找字符串在另一個字符串中最後一次出現的位置,並返回從該位置到字符串結尾的所有字符。

如果成失敗,否則返回 false。

語法

strrchr(string,char)
參數 描述
string 必需。規定被搜索的字符串。
char 必需。規定要查找的字符。如果該參數是數字,則搜索匹配數字 ASCII 值的字符。

提示和註釋

註釋:該函數是二進制安全的。


定義和用法

stripos() 函數返回字符串在另一個字符串中第一次出現的位置。

如果沒有找到該字符串,則返回 false。

語法

stripos(string,find,start)
參數 描述
string 必需。規定被搜索的字符串。
find 必需。規定要查找的字符。
start 可選。規定開始搜索的位置。

提示和註釋

註釋:該函數對大小寫不敏感。如需進行對大小寫敏感的搜索,請使用 strpos() 函數。


定義和用法

ucwords() 函數把字符串中每個單詞的首字符轉換爲大寫。

語法

ucwords(string)
參數 描述
string 必需。規定要轉換的字符串。

例子

<?php
echo ucwords("hello world");
?>

輸出:

Hello World

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章