2013-09-02 4 views
0

При чтении php manual на массив push я обнаружил, что он предлагает использовать $ array [] = $ push для ввода новых записей.

так что мой вопрос в том, как я могу использовать это с многомерными массивами наиболее эффективным способом, то есть скоростью.

Examlple 1:

$client[] = (0); 
$client[] = (1); 
$client[] = (2); 
$client[] = (3); 
$array[$i++]=$client; 
unset($client); 

Пример 2:

$array[$i++]= array(0,1,2,3); 

Пример 3: Примечание: Я не в настоящее время знает хороший способ, чтобы установить ключ массива на этом один

$entry = array(0,1,2,3); 
array_push($array,$entry); 

4 значения, вложенные в массив, будут обновляться очень часто. Для этого я бы предположил, что использование следующего метода будет моим лучшим выбором относительно скорости и эффективности.

$array[0][0]= $array[1][0]+1; 

Орфографический его: У меня есть индивидуальные клиенты с уникальными идентификаторами. Мне нужно отслеживать 4 целых числа для каждого клиента. Я ищу самый быстрый/использует метод самых низких ресурсов.

В целом плохо принять любое предложение, но им любопытно, если пример 1 является лучше с точки зрения скорости и ресурсов, то пример 2.

Спасибо, JT

АКТУАЛЬНО КОД Для TEST:

<?php 
$array = array(); 

$i=0; 
$t1 = microtime(true); 
while ($i<10000){ 
$array[$i++]= array(0,1,2,3); 
} 
$time1 = microtime(true) - $t1; 
$mem1 = memory_get_peak_usage(true); 

//print_r($array); 
$array = array(); 
//echo '<br><br>'; 

$i=0; 
$t2 = microtime(true); 
while ($i<10000){ 
$client[] = (0); 
$client[] = (1); 
$client[] = (2); 
$client[] = (3); 
$array[$i++]=$client; 
unset($client); 
} 
$time2 = microtime(true) - $t2; 
$mem2 = memory_get_peak_usage(true); 

//print_r($array); 
$array = array(); 
//echo ' <br><br>'; 

$i=0; 
$t3 = microtime(true); 
while ($i++<10000){ 
$entry = array(0,1,2,3); 
array_push($array,$entry); 
} 
$time3 = microtime(true) - $t3; 
$mem3 = memory_get_peak_usage(true); 

//print_r($array); 
//echo '<br><br>'; 

print 'example 1 - ' . $time1 . ' - ' . $mem1 . '<br/>'; 
print 'example 2 - ' . $time2 . ' - ' . $mem2 . '<br/>'; 
print 'example 3 - ' . $time3 . ' - ' . $mem3 . '<br/>'; 
?> 

РЕЗУЛЬТАТЫ:

пример 2 - 0,212869294 S

Пример 1 - 0,251849988 S

Пример 3 - 0,748561144 S

Так толкающий массив является NO GO! Это был в среднем около 15 трасс с каждым подсчетом петель до 100 * 1000 :)

+0

Пример 1 не использует $ array [1], поэтому результат отличается. Можете ли вы отправить _complete_ код для обоих примеров, чтобы дать понять, что именно вы хотите сравнить? –

+0

да дайте мне всего несколько минут. @DmitriZaitsev –

+0

@DmitriZaitsev Код написан –

ответ

1

здесь быстрый грязный тест для этого

<?php 
$t1 = microtime(true); 

$array = array(); 

for ($i = 0; $i < 100000; $i++) { 
    $client[] = (0); 
    $client[] = (1); 
    $client[] = (2); 
    $client[] = (3); 
    $array[]=$client; 
    unset($client); 
} 

$time1 = microtime(true) - $t1; 
$mem1 = memory_get_peak_usage(true); 

$array = array(); 
$t2 = microtime(true); 

for ($i = 0; $i < 100000; $i++) { 
    $array[] = array(0=>array(0,1,2,3)); 
} 

$time2 = microtime(true) - $t2; 
$mem2 = memory_get_peak_usage(true); 

$array = array(); 
$t3 = microtime(true); 

for ($i = 0; $i < 100000; $i++) { 
    $array[] = [0=>array(0,1,2,3)]; 
} 

$time3 = microtime(true) - $t3; 
$mem3 = memory_get_peak_usage(true); 

print 'example 1 - ' . $time1 . ' - ' . $mem1 . '<br/>'; 
print 'example 2 - ' . $time2 . ' - ' . $mem2 . '<br/>'; 
print 'example 3 - ' . $time3 . ' - ' . $mem3 . '<br/>'; 

для меня, я обнаружил, что первый пример был бы раз эффективный, но наиболее эффективный с точки зрения памяти, и этот пример 3 слегка выполнен 2 раза, но был равен в памяти

+0

Когда я просмотрел свои примеры, я заметил ошибку.Проблема с тестом, который вы можете сделать, заключалась в том, что у одного был массив, размер которого увеличивался, а другие перезаписывались. Я обновил код в нижней части моего ответа –

+0

, вы поднимаете сильный момент, мне стыдно за себя. ive изменила мою треску тоже –

+0

Вы повторно запустили тест? –

Смежные вопросы