����Queue��

�첽�����ķ������ᆳ��ʹ�ö���ʵ��������������ģ�ͣ���������Ŷ����⡣PHP��SPL��׼�����ṩ��SplQueue��չ���õĶ������ݽṹ������PHP������Ҳ�ṩ��array_pop��array_shift����ʹ������ģ��������ݽṹ��

SplQueue

$queue = new SplQueue;
//���
$queue->push($data);
//����
$data = $queue->shift();
//��ѯ�����е��Ŷ�����
$n = count($queue);

Array����

$queue = array();
//���
$queue[] = $data;
//����
$data = array_shift($queue);
//��ѯ�����е��Ŷ�����
$n = count($queue);

���ܶԱ�

��Ȼʹ��Array����ʵ�ֶ��У���ʵ�������ܻ�dz����һ���󲢷��ķ����������ϣ�����ʹ��SplQueue��Ϊ�������ݽṹ��

100�������������ӡ����ӣ�ʹ��SplQueue����2312.345ms������ɣ���ʹ��Arrayģ��Ķ��еij�������޷���ɲ��ԣ�CPUһֱ������100%�����͵�1������Ҳ��Ҫ260ms������ɲ��ԡ�

SplQueue

$splq = new SplQueue;
for($i = 0; $i < 1000000; $i++)
{
    $data = "hello $i\n";
    $splq->push($data);

    if ($i % 100 == 99 and count($splq) > 100)
    {
        $popN = rand(10, 99);
        for ($j = 0; $j < $popN; $j++)
        {
            $splq->shift();
        }
    }
}

$popN = count($splq);
for ($j = 0; $j < $popN; $j++)
{
    $splq->pop();
}

Array����

$arrq = array();
for($i = 0; $i <1000000; $i++)
{
    $data = "hello $i\n";
    $arrq[] = $data;
    if ($i % 100 == 99 and count($arrq) > 100)
    {
        $popN = rand(10, 99);
        for ($j = 0; $j < $popN; $j++)
        {
            array_shift($arrq);
        }
    }
}
$popN = count($arrq);
for ($j = 0; $j < $popN; $j++)
{
    array_shift($arrq);
}