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