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应用到整个项目
三:函数相集合
如果成失败,否则返回 false。
如果没有找到该字符串,则返回 false。
strpos() 函数。
输出:
详细结果如下(容器类都含有 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
相关文章推荐
- [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map
- 扩展封装暴雪哈希算法(blizard hash algorithm),并与STL map进行操作性能上的比较
- map hash_map unordered_map 性能比较
- map 与 hash_map 性能比较
- javascript的map和forEach,for性能比较
- 从set/map谈到hashtable/hash_map/hash_set
- Java多线程 -- Map容器性能比较
- Hashtable和Dictionary性能比较
- PHP autoload与include性能比较
- map hash_map unordered_map 性能测试
- 遍历Map和List的几种方法和性能比较
- Java:Map与HashMap,Hashtable,HashSet比较
- 【python】map,filter与表达式推导的性能比较
- Hashtable、synchronizedMap、ConcurrentHashMap 比较
- STL中map与hash_map的比较
- map hash_map unordered_map 性能测试 统计
- (转载)STL map与Boost unordered_map的比较
- PHP连mysql和oracle数据库性能比较
- sort group by和hash group by性能比较
- CopyOnWriteArrayList与Collections.synchronizedMap性能比较