您的位置:首页 > 编程语言 > PHP开发

STL map 、PHP HashTable、hash_map 性能比较

2013-04-27 17:11 519 查看
结果是 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: