PHP 5.3RC1中的SplFixedArray测试和使用技巧
2009-08-21 13:32
162 查看
最近在做framework DSW的代码,正在写容器的类库,好不容易写完TList(上面还有一大堆的接口和抽象类~~),结果发现作为SplFixedArray的大Wrapper的TList居然性能上输给了普通数组……晕啊,不过后来才发现……原来……
下面是测试代码:
function test1() {
$i=10000;
$obj=new TList(10); //这个是我自己的类,一开始给10个元素,不够会自动扩充的,也就是说我的不是Fixed容量的,呵呵
while ($i--) {
$obj->Add('10');
}
}
function test2() {
$i=10000;
while ($i--) {
$arr[]='10';
}
}
function test3(){
$i=10000;
$spl=new SplFixedArray(10000);
while ($i--) {
$spl[$i]='10';
}
}
function test4() {
$i=10000;
$spl=new SplFixedArray(10000);
while ($i--) {
$spl->offsetSet($i, '10');
}
}
test1();
test2();
test3();
test4();
测试环境:Windows 7(7260)、PHP 5.3RC1 CGI、Zend Studio7(Build ID 20090805的试用版)内置的PHP Profile、Intel T7100@1.8GHz、3G DDR2
测试结果(点击看大图):
呵呵,其实,只有像数组那样使用SplFixedArray才会快,就是要像test3()那样,用“[]”,而不是SqlFixedArray::offsetSet(),那样只有慢,我TList就是没有用“[]”,导致速度慢。
下面是测试代码:
function test1() {
$i=10000;
$obj=new TList(10); //这个是我自己的类,一开始给10个元素,不够会自动扩充的,也就是说我的不是Fixed容量的,呵呵
while ($i--) {
$obj->Add('10');
}
}
function test2() {
$i=10000;
while ($i--) {
$arr[]='10';
}
}
function test3(){
$i=10000;
$spl=new SplFixedArray(10000);
while ($i--) {
$spl[$i]='10';
}
}
function test4() {
$i=10000;
$spl=new SplFixedArray(10000);
while ($i--) {
$spl->offsetSet($i, '10');
}
}
test1();
test2();
test3();
test4();
测试环境:Windows 7(7260)、PHP 5.3RC1 CGI、Zend Studio7(Build ID 20090805的试用版)内置的PHP Profile、Intel T7100@1.8GHz、3G DDR2
测试结果(点击看大图):
呵呵,其实,只有像数组那样使用SplFixedArray才会快,就是要像test3()那样,用“[]”,而不是SqlFixedArray::offsetSet(),那样只有慢,我TList就是没有用“[]”,导致速度慢。
相关文章推荐
- 使用PHP的五个技巧
- PHP关联数组的一些使用技巧
- PHP 使用 Sublime Text的技巧,插件安装,删除,快捷键
- html标签pre在php调试中使用技巧
- 榨干 PHP,不得不转的一篇PHP使用技巧!
- Memcache 在PHP中的使用技巧
- PHP开发经验中介(thinkphp3.2使用技巧)
- php语言中使用json的技巧及json的实现代码详解
- PHP使用技巧
- 使用PHP处理文本小技巧
- php中未定义的变量使用技巧
- PHP对话的具体使用技巧分享
- PHP匹配颜色函数的使用技巧
- PHP时间戳 strtotime()使用方法和技巧
- PHP获取字段长度相关函数使用技巧
- VS2015使用技巧 PHP Tools for Visual Studio在控制面板处卸载
- 深入PHP使用技巧之变量
- PHP数组操作汇总 php数组的使用技巧