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

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就是没有用“[]”,导致速度慢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息