Как Apple водила козу, или Как в 3,7 раза ускорить Safari

37

First Pic

Как сделать человеку хорошо? Народная мудрость советует сделать плохо, а потом вернуть как было. Именно так недавно программист Apple Джофф Гарен (Geoff Garen) в 3,7 раза ускорил движок браузера Safari WebKit, просто убрав оттуда функцию, заставлявшую программу не делать ничего. Пикантность ситуации состоит в том, что эту функцию туда добавил его коллега Мачей Стаховьяк (Maciej Stachowiak).

Упростив суть и отбросив излишние подробности, можно сказать, что функция sleep () заставляет WebKit на протяжении какого-то времени не делать ничего, а подобное «ничегонеделание» и приводит в итоге к заметным подтормаживаниям и зависаниям в работе. Вообще, использование подобной функции считается чаще всего плохим тоном, а уж тем более такое использование, как в этом случае. Дело в том, что функция вызывалась в блоке управления памятью, который вызывался весьма часто.

Эту досадную промашку исправили еще в мае этого года, но буквально на днях эта новость всплыла на известном сайте Hacker News и стала началом длительного троллинга инженеров Apple оживленной дискуссии. В итоге в посте появился и сам автор этих строк, и объяснил что «изначально этот код разрабатывался для серверного применения, и sleep () там оправдан, но для WebKit, возможно, это и является перебором».

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

Comic

Отдельную пикантность ситуации добавляет тот факт, что Мачей Стаховьяк является в Apple лидером команды разработчиков, отвечающих за Safari и WebKit, и уж кому как не ему должна быть известна одна из первых заповедей программиста: copy-paste — это зло!

В любом случае, ошибка была исправлена, а нам остается порадоваться, что «мы стали более лучше серфить в Интернете».

По материалам http://news.ycombinator.com/

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

  1. 0

    То есть у кого 10.8 уже и так ускорен в 3.7 раза? или ждем патч?

  2. 0

    Всем , даже браузерам, хочется SLEEP!!!)))

  3. 0

    хром все равно быстрее. ^^

    • 0

      675678, иди и почитай, для таких как ты уже все посчитали
      http://www.businessinsider.com/new-safari-vs-chrome-and-firefox-2012-7?op=1

      • 0

        ganjubasoff, хорошо, что для таких как я уже все подсчитали. 🙂
        я правда имею ввиду windows chrome vs. windows safari. 😛

      • 0
        Владимир

        ganjubasoff, Зачем нам что-то читать когда я на своем собственном ретина мак буке вижу что хром гораздо быстрее работает? Ты мне хоть тысчу статей покажи, но гораздо убедительнее факты которые сам видишь. А ни чьи-то статьи. Причем проверяется элементарно. Заходишь на любимые сайты и видишь, что хром быстрее. Да, он не так гладко работает как сафари. Да мне бы хотелось бы чтобы сафари быстрее был, т к он лучше интегрирован в ось но к сожалению факт остается фактом. И на мак оси я польщусь хромом как это не прискорбно…

    • 0

      675678, Странно, но на моем горном Льве сафари работает заметно быстрее хрома. На Льве сидел только в хроме, не мог приучить себя к сафари.. (отправлено из приложения AppleInsider.ru)

    • 0
      Павел Дмитриев

      675678, уже не факт, хром все больше тормозит с каждой версией

    • 0
      Владимир

      675678, К сожалению хром быстрее, а жаль. Лучше бы сафари.

  4. 0

    В Safari 6 исправили.

  5. 0

    а как проверить? откуда такое число: 3.7?

    • 0
      Павел Дмитриев

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

  6. 0

    У меня точно в 3,7 быстрее, да.. (отправлено из приложения AppleInsider.ru)

  7. 0
    elena.golovach

    Это была фора другим браузерам.
    Webkit-браузеры всегда были значительно быстрее, чем файрфокс и ИЕ. (отправлено из приложения AppleInsider.ru)

  8. 0

    Павел, Вы немного недопередали суть. Но спасибо за ссылки на оригиналы. Почитал — допонял.
    Пардон за задорновизмы.

  9. 0

    Стаховьяк наверно написал временный код, делал многопоточную обработку и применил sleep для недопущения dead lock-а, но потом забыл и закоммитил изменения с временным кодом. Плохой Стаховняк, плохой!

  10. 0

    Сейчас пересмотрел кусочек презентации iPhone 4S

    И в некоторых моментах Apple наврали, чтобы опустить конкурентов. Например, был слайд где отображалось время которое понадобится для съёмки 1-ой фотографии.

    Запускаем программу Камера и ждём секунды 3, а не 1,1 с как было показано. А вот 2-ая фотка действительно делается быстро. — у них в слайде было сказано 0,5 секунды на съёмку 2-ой и последующей фотографии.

  11. 0

    А я то думаю, чего это Safari стал таким реактивным в Mountain Lion… 😀

  12. 0

    Это кстати я тоже почувствовал но только в горном льве быстроту safari причем на много быстрей!.. (отправлено из приложения AppleInsider.ru)

  13. 0

    «мы стали более лучше серфить в Интернете».

    более лучше — ошибка, исправьте, пожалуйста, режет глаз.

  14. 0

    Это как раз к вопросу о том, почему новые версии iOS которые с каждым релизом должны ускоряться за счет оптимизации — начинают тормозить, я думаю что не sleep() конечно, но какие нить пустые циклы точно используются))) вот вам и Типа маркетинговый ход :)) от любимой всеми нами Apple

  15. 0
    Анатолий, друг Володи

    Не знаю, как у кого, а у меня Safari на macbook air и ОС 10.8 летает, а на ipad 3 и ОС 5.1.1 работает несравнимо медленнее. Все самых последних версий, а работают заметно по разному.

  16. 0
    Cooler(Бывший Дмитрий)

    Ребят, не надо быть глупцом и знать особо программирование, но там явно видео, что это только для Windows( if OS(Windows) то sleep(2), а иначе выполнять команду другую) для MAC все по старому…хотя бы внимание обращали

  17. 0

    У меня айфон 5s. После обновления 8.0.2 стало невозможно серфить, сафари стал настоящим тормозом?! Эти их разработчики испоганили всю иос, а еще говорят что у нас руки не с того места растут! Бесит аж (отправлено из приложения AppleInsider.ru)

Авторизуйтесь Чтобы оставить комментарий