Каталог RSS-каналов
Статистика

RSS-каналов в каталоге: 3394

Добавлено сегодня: 0

Добавлено вчера: 0

Hi-Tech / Прочее

[Из песочницы] PHP, GDB и массивы

Хабрахабр / Лучшие публикации за сутки 15.05.2018 в 07:35

Лучшие публикации за последние 24 часа

Зачем простому PHP разработчику может понадобится дебаг исходников? Ну например если он заметил какое-то не очевидное поведение и хочет разобраться в нем на максимально “низком” уровне. О таком интересном для меня поведение, а так же процессе “дебага сурсов” я и хотел бы поговорить.

Мотивация

Начнем с места в карьер, вот два похожих куска кода:

Раз $arr = []; for ($i =0; $i < 300; $i++) { $arr[rand(1,1000)] = 1; } $sum = 0; for ($i = 1001; $i < 200000000; $i++){ if (array_key_exists($i, $arr)){ $sum++; } }

Два $arr = []; for ($i =0; $i < 300; $i++) { $arr[rand(1,1000)] = 1; } sort($arr); $sum = 0; for ($i = 1001; $i < 200000000; $i++){ if (array_key_exists($i, $arr)){ $sum++; } }

Разница между ними в том, что во втором случае мы отсортировали массив $arr, тем самым обновили ключи 0..count($arr)-1. А заинтересовал меня тот момент, что первый скрипт выполняется 6.0 секунд, тогда как второй 4.7 секунды. Получается около 20 процентов разницы.

Если Вы знакомы с внутренним устройством хэш-таблицы php, а так же с хэш функцией, то Вы или уже знаете ответ или можете без особого труда догадаться. Ну а для остальных я расскажу как настроить среду для дебага и выяснить в чем же дело.

Читать дальше →

Другие записи ленты

«Флант» и Okmeter: симбиоз на благо мониторинга 15.05.2018 в 06:14

DevConf: перспективные базы данных для highload 10.05.2018 в 17:07

Patch Tuesday: критически важные патчи, которые вы могли пропустить 10.05.2018 в 15:50

[Перевод] Что я узнал на личном опыте за годы фриланса 10.05.2018 в 13:38

UI-компоненты на пиксельных шейдерах: пишем ваш первый шейдер 10.05.2018 в 13:36

Codeisok, или История code review в Badoo 10.05.2018 в 13:01

TON: Telegram Open Network. Часть 2: Блокчейны, шардирование 10.05.2018 в 11:32

Глубокое обучение с использованием R и mxnet. Часть 1. Основы работы 10.05.2018 в 10:00

Архитектура платежной системы. Банальности, проверенные опытом 10.05.2018 в 09:26

[Перевод] Небольшое расследование: как YouTube использует WebRTC для стриминга 10.05.2018 в 09:16