О стоимости доступа к объектам в PHP

Удивительное — рядом: недавно искали с нашими админами место в коде где больше всего тормозит вывод одной страницы одного из сайтов, сделанных в недрах нашей компании в незапамятные времена.

Код был довольно запутанный, попросили меня помочь. Место я вычислил. Если его закоментировать, страница начинала выдаваться не за десятки секунд, а за единицы.

Никогда такого не видел. Как вы думаете, что тормозило? Запросы к базе? Какая-то суперматематика? Сортировка, может быть? Цикл в цикле в цикле, а там внутри что-то сложное?

Вовсе нет.

После выборки из базы, данные выкладывались в массив сложных объектов, в данном месте это было массив из почти что 500 объектов, внутри объектов лежали другие объекты, а них — ещё. Заполнение этой структуры занимало немало времени, но тормозило другое — цикл перебора массива объектов с выводом свойств объектов третьей вложенности.

В цикле не было вызвано ни одной функции (кроме htmlspecialchars), а вывод всего этого хозяйства занимал порядка десятков секунд.

13 комментариев

Превращение маковской флешки в полноценную

Как, наверное, многие знают, при покупке ноута «МакБук», в коробке лежит не компакт-диск (как это бывает с ноутами других фирм), а флешка, на которую записана операционная система (в комментариях читатели подсказали, что сейчас уже флешку не кладут). Флешка очень симпатичная, но, к сожалению, использовать её для своих нужд не получается — при подсоединению к компьютеру она монтируется как виртуальный сидиром и записать на неё ничего не выходит.

Флешка для Мака (78.10КиБ)

Оказывается, есть способ превратить её в полноценную, перезаписываемую флешку! Для этого, правда, понадобится компьютер с Виндой или хотя бы виртуальная машина. В моём случае это был старенький ноут с нужной операционкой. Винда вам нужна, чтобы запустить утилиту sm32Xtest, которая и вразумит ваш «сидиром».

После запуска, если утилита не нашла вставленную флешку, нужно нажать «F5», в этом случае, произойдёт скан всех ЮСБи-устройств и в одной из строчек появится надпись «Ready», у меня это оказался порт №1, как видно на скриншоте:

Утилита нашла флешку (37.50КиБ)

Если эта операция выполнилась успешно, надо нажать клавишу пробела и дождаться выполнения всех оставшихся операций. Если всё прошло хорошо, в строке статус сменится на «Pass», а справа появится большая надпись «OK»:

Всё прошло хорошо (45.09КиБ)

После этого можно флешку извлекать (не забудьте извлечь её безопасно). У меня получилась флешка в 8ГБ:

Новоиспечённая флешка (76.29КиБ)

11 комментариев

Смирнов вернулся в Новосибирск

Дима Смирнов (помните ещё такого?) переехал обратно из Москвы в Новосибирск. И написал небольшую и разумную заметку о своём переезде:

Я ехал не в Москву, а в Яндекс. При этом люди годами не могли понять, почему я такой талантливый и хороший до сих пор не ринулся покорять Москву.

Я и не ринулся, потому что прекрасно осознавал, что Москва мне не нравится. Но если Яндекс — лучшая айти компания в России, а я такой талантливый и хороший — то мне там место, а Москву можно потерпеть. Оказалось, нет.

7 комментариев