STL map 、PHP HashTable、hash_map 性能比较

来源:互联网 发布:mac下载软件怎么安装 编辑:程序博客网 时间:2024/06/05 13:31


          结果是 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.phpfunction _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必需。规定要转换的字符串。

例子

<?phpecho ucwords("hello world");?>

输出:

Hello World

原创粉丝点击