Ну очень часто крашился он у меня. До сих пор считаю его самым удобным из существующим мессенджеров, но надежность его достала — пришлось отзаться в пользу Pidgin. Последней каплей стали пропадающие (не доходящие до меня) сообщения (началась проблемы после пары-тройки заходов в онлайн-версию клиента). И краш репортов штук 40 за 2 года использования скопилось.
Пока удалось реализовать алгоритм разбиения пространства известных цветов на сектора. И поиск по ним. Но проблема в том, что вокруг сектора, в который входит цвет еще 26 секторов (по каждой из трех координат).
Поиск на данный момент занимает 1.5-2 секунду на каждую тысячу запросов.
Поиск с линейным пробегом по всему массиву известных цветов — 10-15 секунд на тысячу.
Поиск с перебором всех цветов начиная от искомой точки и по радиусу — 8 секунд на тысячу.
Пытаюсь разобраться с kd-tree. Есть где-то подробности их реализации для 3х мерного пространства? Я нашел пока 1 — на C# (то что надо), но уж больно она была медленной. Или хотя бы нормальное описание алгоритма. В wiki понять что-то сложно — там научная статья, с практикой расходящаяся.
Так не проблема предварительно массив обработать. Сейчас экспериментирую с пространственным разбиением массива на области.
Один предварительный расчет даже требующий 10 минут расчетов — это ерунда по сравнению с 24 часами перебора массива в миллион элементов 16.7 миллионов раз (именно столько поисковых запросов надо сделать).
Не одинаковое. В массиве какой-то произвольный набор цветов. Их можно отсортировать как угодно. Все цвета уникальные. И есть цвет (3 его компоненты) для которого надо в массиве найти ближайший.
Может мы про разные баги говорим? Я про баг с двумя и более классами у одного элемента. Там принципиален порядок следования этих классов в селекторе в IE7.
Кстати, особенно советую протестировать собранные CSS потом в IE7 (особенно, если CSS могут подгружаться асинхронно). Причем в нативном IE7 (не в эмуляции из IE8/9). У него есть баг с CSS для элементов со склеенными классами (class=«class1 class2») и селекторами вида .class1.class2 (без пробела).
Не писать селекторов для html элементов, только для классов (лучше и для ID не писать). Писать максимально полные селекторы (с максимально возможной глубиной). У более общих селекторов — меньше глубина (под глубиной == 3 понимаю такой селектор: .class1 .class1_1 .class1_2, под глубиной == 2 — .class1 .class1_1). Чем больше глубина (а таким образом, точнее правило), тем больший приоритет селектор имеет.