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

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