Моё мнение — это сам баннер adidas использует какие-то хитрости, работающие только в хроме, позволяющие нелегально скроллить страницу к своему баннеру. Я обратил на это внимание потому, что другие баннеры ведут себя «тихо» и эффект никак не проявляет себя.
Проверил в виртуальной машине на чистой Windows XP, последний хром — эффекта не наблюдаю. Ищите троянец или какое-нибудь «доброе» дополнение к хрому (у меня чистая инсталляция винды и хрома, без мусора).
Сейчас всё в порядке. Похоже на кэш или что-то вроде это — ругался на отсутствующие css/js-файлы, минут 30 назад показывал просто карту без интерфейса. Или я слишком поспешил опробовать новый интерфейс.
Вместо значений цветов пикселей находится содержимое файлов-ресурсов, которое извлекается клиентской библиотекой с помощью Canvas.
Насколько я понимаю, чтение такого canvas будет «греть атмосферу» несколько секунд, что при загрузке веб-страницы совершенно неприемлемо. Хотелось бы увидеть в статье, насколько замедлилась загрузка страницы благодаря такой «оптимизации» по сравнению с несжатым аналогом.
NOTES
Normally, malloc() allocates memory from the heap, and adjusts the size
of the heap as required, using sbrk(2). When allocating blocks of mem-
ory larger than MMAP_THRESHOLD bytes, the glibc malloc() implementation
allocates the memory as a private anonymous mapping using mmap(2).
MMAP_THRESHOLD is 128 kB by default, but is adjustable using mal-
lopt(3). Allocations performed using mmap(2) are unaffected by the
RLIMIT_DATA resource limit (see getrlimit(2)).
Если что-то непонятно — смотрим SEE ALSO и ходим по ссылкам. Если что-то плохо описано — contributions are welcome:)
Именно, чтобы не дёргать по каждому поводу ядро для выделения куска памяти (скажем, создание множества объектов — счёт идёт на байты), этот механизм отдаётся на откуп библиотеке libc. Недаром существует целаякучакустарныхбиблиотеквыделенияпамяти. Дажесловнехватаетихвсеописать:) Кстати разница между этими всеми навороченными lockless-библиотеками в Linux — жалкие проценты как раз по причине, озвученной автором статьи.
M_MMAP_THRESHOLD
For allocations greater than or equal to the limit specified
(in bytes) by M_MMAP_THRESHOLD that can't be satisfied from
the free list, the memory-allocation functions employ mmap(2)
instead of increasing the program break using sbrk(2).
Причём сама glibc решает, когда mmap-ить, а когда не следует.
Для тех, кто хочет понять, как рисовать сферы при помощи шейдеров, но с перспективой, а не с glOrtho, есть прекрасная статья.
Правильно ли я понял, что там используют Point Sprites вместо того чтобы топтаться в экранных координатах? Я слабо представляю как эта цепь магических констант будет выглядеть в случае перспективы:
Добро пожаловать в мир опенсорс.
Конфиги: GSettings, GConf, DConf, GKeyFile, QSettings, KConfig.
Графические тулкиты: GTK, GTK2, GTK3, Qt3, Qt4, Qt5 (да, всё это до сих пор используется), FLTK, EFL, Tk.
И это я ещё наверняка половину забыл. Но замечу, в пользу dconf, этот метод должен быть удобным в плане скорости и привязки к приложению: один бинарный файл mmap-ится ко всем приложениям как какая-то библиотека, соответственно память будет расшарена на всех (все эти хитросплетения conf-ов от отсутствия нормального механизма синхронизации). Стоп, так это же уже было сделано в Windows… Но нет, нам по граблям нужно пройтись самостоятельно.
Да было дело позапрошлой весной…
Но в Linux проблем нет.
Насколько я понимаю, чтение такого canvas будет «греть атмосферу» несколько секунд, что при загрузке веб-страницы совершенно неприемлемо. Хотелось бы увидеть в статье, насколько замедлилась загрузка страницы благодаря такой «оптимизации» по сравнению с несжатым аналогом.
И никакого расследования бы делать не пришлось.
P.S. Подскажите хороший XML-парсер из coreutils ну или хотя бы из GNU…
Если что-то непонятно — смотрим SEE ALSO и ходим по ссылкам. Если что-то плохо описано — contributions are welcome:)
Причём сама glibc решает, когда mmap-ить, а когда не следует.
Правильно ли я понял, что там используют Point Sprites вместо того чтобы топтаться в экранных координатах? Я слабо представляю как эта цепь магических констант будет выглядеть в случае перспективы:
Или это возможно даже без расширений ARB? И есть ли какая-то разница между PointSprite и просто Point?
В общем, самое таинственное осталось за кадром.
P.S. Опередили:)
Конфиги: GSettings, GConf, DConf, GKeyFile, QSettings, KConfig.
Графические тулкиты: GTK, GTK2, GTK3, Qt3, Qt4, Qt5 (да, всё это до сих пор используется), FLTK, EFL, Tk.
И это я ещё наверняка половину забыл. Но замечу, в пользу dconf, этот метод должен быть удобным в плане скорости и привязки к приложению: один бинарный файл mmap-ится ко всем приложениям как какая-то библиотека, соответственно память будет расшарена на всех (все эти хитросплетения conf-ов от отсутствия нормального механизма синхронизации). Стоп, так это же уже было сделано в Windows… Но нет, нам по граблям нужно пройтись самостоятельно.