Как стать автором
Обновить
5
0
Igor Mazurok @IEMazurok

Пользователь

Отправить сообщение
  • Даже если статья имеет целью пиар, Это не мешает ей быть интересной и полезной. Нужно различать цели и задачи. Пиар, как одна из задач, есть у любой кампании. Хуже, когда это самоцель (как тут в некоторых комментариях).
  • У меня нет основания сомневаться в фактах, изложенных в интервью. Возможно другие люди воспринимают эти факты иначе чем Виктор, но скорее всего, дело в том, что они просто наблюдали ситуацию с другой позиции. Что касается личности, то у меня сложилось мнение о Шабурове, как о креативном, деловом и умном человеке со свободным абсолютно не зашоренным мышлением, открытом к общению, высоком профессионале. Я ни кого не идеализирую, но за время нашего знакомства мне ничего плохого не вспоминается. Интересно, что в этом он очень похож на нескольких других моих знакомых, которые тоже создали успешный бизнес в области ИТ. Совпадение? Или это важно для успеха?
  • Что мне кажется важным в этом интервью? Человек, бизнес которого зависит от наличия умных, образованных людей, что-то реально делает, чтобы этих умных образованных людей было больше. Т.е. как-то целенаправленно помогает немногим ещё не полностью высохшим веткам нашего образования. К сожалению, не все так поступают. Чаще просто рубят лес и сетуют, что лес кончается и скоро всему будет п%?#лохо.
Андрей Терещенко, любезно разрешил разместить здесь цитату из нашего с ним обсуждения этой же темы на фейсбуке. Возможно она покажется полезной.
Цитата
image
"… И вот интересная картинка к коду ideone.com/k8h9k0 (предыдущий комментарий). На ней видно, как в определенные моменты с ростом размера данных, время исполнения увеличивается. Так на желтой линии по сравнению с черной видно влияние кеша, а разница между желтой и оранжевой (или синей и черной) — влияние вложенных массивов."
Точно. Увлекся полемикой.
Согласен с Вашим предположением.
Более точные эксперименты подтверждают.
Я видимо плохо объясняю. Я публикую код, который наилучшим образом демонстрирует проблему.
Если бы я публиковал код в котором у меня неожиданно просел fps после рефакторинга, это было бы бессмысленно. Я выделил проблему, проверил все возможные накладки и опубликовал короткий понятный код, демонстрирующий проблему. Если Вам почему-то хочется считать, что все хорошо получилось только по счастливой случайности, боюсь я не смогу Вас переубедить.
fill() позволит заполнить линейный массив одинаковыми значениями. Мы обсуждаем вопрос почему так сильно различается скорость перебора элементов двумерного массива «по строкам» и «по столбцам». Относительная парадоксальность ситуации в том, что обычно декларируется (так оно и есть), что массив структура данных с эффективным произвольным доступом. Постепенно в обсуждении формируется идея, что при доступе по строкам производится O(n+m) обращений к элементам массива. А при доступе по столбцам — O(n*m).
Согласен. А что writeback всегда происходит после изменения одного элемента массива?
Это супер близко к полному решению. Дальнейшие разборки потребуют вникнуть в полученный код. Только учтите, что просто число команд еще не делает погоду. Да, второй цикл в два раза короче (6 команд), но он и выполняется в два раза большее число раз.
Задач для новичка не бывает. Есть просто задачи. Человек их решает, мыслит, выдвигает гипотезы. Ты наблюдаешь, общаешься. Вы видите, как коллективный разум на три счета здесь раскрутил ситуацию?
memset конечно форевер, но это подмена задачи. Вопрос именно в доступе, а не в том, что мы с ним делаем.
А согласитесь, забавная вышла задачка на ровном месте. Нет?
Совершенно верно. Но почему Вы считаете, что автор непременно глуп и невнимателен? Результаты вычислений суммировались, чтоб их не выкинул оптимизатор. Когда убедился, что ничего не выбрасывается, исключил лишнее из кода. Еще раз говорю, код демонстрирует проблему. И Вы это подтверждаете. Что Вас смущает?
Не беспокойтесь — я проверял на многих прогонах. И с прогревом тоже поэкспериментировал. К слову, автоматический прогрев по участкам кода без многократного вызова функции обычно не производится.
Для демонстрации пишется короткий и прозрачный для понимания код, который демонстрирует проблему. Что я и сделал. Вы говорите везение? Чем больше работаешь, тем чаще везет.
Про спец обработку массива новой строки совершенно правильно уже писал MuLLtiQ, который воспользовался javap. Там действительно идет громоздкий дереференс. Но если уже раздерибанили байткод, то есть смысл досмотреть до конца? Что там еще? И кстати, можно ли все таки воспользоваться симметричностью и сделать все быстрее чем по строкам?
Вы абсолютно правы, что дело в порядке доступа. Но как быть с этим ideone.com/tMaR2S?
Так отключите
Правильно. Вот их в легионеры и брали таких. Здесь схожесть ситуации в том, что интересно понаблюдать за действиями-рассуждениями потенциального программиста работающего над задачей, простой по формулировке, но не понятной для него по поведению кода.
Мне очень понравилась версия про кэш процессора. Основная его идея — последовательный доступ быстрее случайного. Давайте поисследуем его чуть-чуть. Напишем простой код. Даже без двумерного массива. Просто, работаем с элементами массива подряд (вариант 1) и в случайном порядке (вариант 2). Вот он — ideone.com/tMaR2S. При таком размере массива (1200 целых чисел), случайный доступ чуть-чуть быстрее. Можно снова поиграть с размером массива и получить самые разные результаты.
Так мы об этом и говорим
Для таких маленьких массивов скорость исполнения измеряется с большой погрешностью. Кстати, обратите внимание на нарушение закономерности при изменении размера всего на единицу 117 — 118. Причем работает на виртуальном сервере ideone.com/r4ZXu5. На локальной машине вы это вряд ли получите.
Не повлияло в лучшую сторону
Т.е. уменьшает. Вы имеете ввиду страничироване памяти?
Пишут и не такое, но спасибо, исправил.
1

Информация

В рейтинге
Не участвует
Откуда
Одесса, Одесская обл., Украина
Дата рождения
Зарегистрирован
Активность