ArrayList是一个使用C实现类似于Java ArrayList的高性能扩展。 适用于构建超大数组,比原生数组创建数组使用时间更快,内存占用量更少。
php7.0 +
phpize
./configure --enable-arraylist
make
make install
下载源码自行编译
ArrayList implements ArrayAccess, Countable {
/* 方法 */
public __construct ([ int $size = 0 ] )
public count ( void ) : int
public getSize ( void ) : int
public get ( int $index ) : mixed
public add (mixed $newval ) : void
public toArray ( void ) : array
}
$ret = new ArrayList();
$ret[] = 1; // 也可以使用 $ret->add(1);
$ret[0]; // 也可以使用 $ret->get(0);
$ret->count();
$ret->getSize();
$ret->toArray();
const SIZE = 20;
$ret2 = new ArrayList();
$ret3 = new ArrayList();
for ($i = 0; $i < SIZE; $i++)
{
$ret2->add((string)$i);
$ret3->add((string)(SIZE-$i));
}
$ret = new Arraylist();
$ret->add($ret2);
$ret->add($ret3);
for ($i = 0; $i < $ret->count(); $i++) {
for($j = 0; $j < $ret->get($i)->count(); $j++) {
var_dump($ret->get($i)->get($j));
}
echo "\n";
}
$ret = new ArrayList();
$ret->add([1, 3, 4, 5, 6,]);
$ret->add([8, 9, 10]);
for ($i = 0; $i< $ret->count(); $i++) {
foreach($ret->get($i) as $v){
var_dump($v);
}
}
Testing size | ArrayList | Array |
---|---|---|
1,000 | 0.00059604644775391 16.1875 |
0.00033903121948242 19.9375 |
2,000 | 0.00047087669372559 32.1875 |
0.00060915946960449 35.9375 |
4,000 | 0.00081586837768555 64.1875 |
0.00076293945312500 67.9375 |
8,000 | 0.00094485282897949 128.1875 |
0.00123691558837890 131.9375 |
2,048,000 | 0.19431805610657 32000.28125 |
0.32430100440979 33539.9375 |
4,096,000 | 0.44307684898376 64000.28125 |
0.67080807685852 67075.9375 |