Створіть Java як HashMap у PHP зі складністю читання O (1).
Відкрийте термінал phpsh:
php> $myhashmap = array();
php> $myhashmap['mykey1'] = 'myvalue1';
php> $myhashmap['mykey2'] = 'myvalue2';
php> echo $myhashmap['mykey2'];
myvalue2
Складність $myhashmap['mykey2']
цьому випадку здається, є постійним часом O (1), тобто, коли розмір $ myhasmap наближається до нескінченності, кількість часу, необхідного для отримання значення, заданого ключем, залишається незмінним.
Свідченням прочитаного масиву php є постійний час:
Запустіть це через інтерпретатор PHP:
php> for($x = 0; $x < 1000000000; $x++){
... $myhashmap[$x] = $x . " derp";
... }
Цикл додає 1 мільярд ключів / значень, потрібно близько 2 хвилин, щоб додати їх усі до хеш-карти, що може вичерпати вашу пам’ять.
Потім подивіться, скільки часу потрібно для пошуку:
php> system('date +%N');echo " " . $myhashmap[10333] . " ";system('date +%N');
786946389 10333 derp 789008364
Отже, як швидко здійснюється пошук карти масивів PHP?
Це 10333
ключ, який ми шукали. 1 мільйон наносекунд == 1 мілісекунда. Кількість часу, необхідного для отримання значення з ключа, становить 2,06 мільйона наносекунд або близько 2 мілісекунд. Приблизно стільки ж часу, якщо масив був порожнім. Мені це здається постійним часом.