Что ломается, когда картинку тянут в строку
В мастерской музея женщина вешает на стену сотни квадратов. Один квадрат смотрится чужим, и она не ищет ответ в стопке на полу. Она глядит вверх, вниз, влево и вправо на самой стене. Тут всё просто: стена как картинка, а соседние квадраты на стене и есть настоящие соседи внутри неё.
Долгое время быстрые системы для картинок работали будто по списку распаковки. Стену мысленно растягивали в длинную ленту, и рядом вдруг оказывались не те куски, а настоящие соседи сверху и снизу разъезжались далеко. Для текста это терпимо. Для картинки нет.
Новый ход не сворачивает стену в ленту. Каждый квадрат всё ещё может оглянуться на всю стену целиком, как смотритель, который отходит на шаг назад. Но больший вес получают близкие соседи, потому что край, узор или часть предмета обычно тянутся рядом, а не через полстены.
Была загвоздка: если каждый квадрат будет долго сверяться со всеми, скорость пропадёт. Ну и вот, положение по рядам и столбцам разбили на простые части и считают через короткие сводки, а не заново каждый раз. Поэтому стена остаётся видимой целиком, а работы не раздувается вместе с ней.
Потом всплыло ещё одно узкое место. В каждом квадрате слишком много мелких подробностей, если таскать их в полном виде. Поэтому для главной сверки берут более лёгкий набросок, а рядом держат тонкую дорожку с частью исходных деталей. Будто бригада смотрит на маленькие карточки, но важные пометки не выбрасывает.
На обычных проверках такой способ держался наравне с другими быстрыми вариантами или обходил их, особенно там, где картинок было меньше и близкое соседство помогало сильнее. А версии, которые всё ещё думали лентой, заметно сдавали. Скорость вернулась только тогда, когда картинку перестали принимать за строку.