PHP 5.3RC1中的SplFixedArray测试和使用技巧

本文通过对比自定义TList类、数组、SplFixedArray等不同数据结构,在相同环境下的性能表现,发现直接使用“[]”操作符访问SplFixedArray时性能最佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做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就是没有用“[]”,导致速度慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值