есть такая вещь как таблица логарифмов. Пару сотен КБ в памяти и все логарифмы от целых чисел находятся за одно действие.
float * LogTable;
float inline Log(long i)
{
return LogTable;}
Помой му подсветку уже давно отстала от мозгов.
Возникает вопрос про ваши эксперименты. Как они проводились?
Почему этот вопрос я задаю: потому что считаю гипотезу изменения на log маловероятной. Поскольку Яндекс существует намного больше, чем база Михаила. Сначала внутренние факторы играли важную роль. Во всех источниках написан логарифм. Логарифм довольно быстро вычисляется по таблице.
Хотя возможно такое, что число которое загоняешь в колдовку логарифмируется?Т.е пишешь ::5066, а вес для расчетов будет равен log(5066).
Можно использовать поле "найдено страниц" Яндекса и примерно рассчитать зависимость по старым данным, а потом его юзать.
1. Не пугайте пуганный.
2. Говорили по мылу - по мылу и ответьте. Не зачем на форуме флудить.
3. Я спрашивал у вас номер вашего З кошелька. По мылу. Вы не потрудились ответить.
4. См. 2 на ФОРУМЕ отвечать вам не буду.
Hkey добавил 05.12.2008 в 13:09
1. Это по мылу лучше обсуждать.
2. Удалите файлы ини в папке опции.
3. Еще раз перешлите мне по мылу ваш АйДи.
совпадение md5 не однозначно совпадению строк. Две разные строки могут иметь одинаковую контрольную сумму. Если размер кс не больше размеру строки )))). Нужно дополнительно сверять эти строки. Вторая строка у нас есть в памяти, но первая (мд которой уже есть в базе) находиться в довольно длином файле и в среднем нужно считать 1500/50/2 = 150 мб. чтобы добраться до него. Т.е. на одно удаление нужно считать минимум 150 мб. Это займет как минимум несколько секунд.
Второй момент - таблица. Найти мд в таблице - довольно сложно и эту операцию нужно произвести N раз. Где N число строк равное нескольким десяткам (а то и сотням) милионов.
НЕ знаю как Мускл организует таблицу. Но в самом оптимальном варианте (бинарный поиск или поиск по оптимально сбалансированному дереву) эта радость займет время пропорциональное ln(N). Т.е. N*Ln(N) - что очень плохо.
за пять баксов ) Это смешно. Нужен хешированный поиск.
Берется функция H(строка S, int M), которая возвращает число не более M.
Потом создается M хеш-файлов-ссылок номер файла, номер строки, и М Хеш-Файлов содержаний. В файлах содержаний - содержания строки исходного файла. Строка записывается в хеш файлы под номерами равными ее хешу.
Потом происходит отбработка хеш файла. Строки сверяются и создается 50 очередей удаления (для каждого исходного файла) - они содержат номер строки который нужно удалить. Затем очереди обрабатываются.
М следует выбирать на 1-3 порядка меньшим числа строк. М должно быть простым числом. Время поиска дублей сокращается в M*M раз.
Можно ускорить введя CRC. Числа будут сверяться быстрее строк. Если CRC двух строк равны, то проверяются уже строки.
Я добавлю в интерфейс программы упрощенную вставку спец. символов
Можно использовать вставку символа ANSI ~!!~035 - на месте этой комбинации будет стоять #. Коды других символов можно узнать здесь http://ostermiller.org/calc/ascii.html. Т.е. можно поставить в окончательные варианты любой символ. Например, "{" или "|" или "}" - ~!!~123 ~!!~124 и ~!!~125 соответственно.
# - используется для завершения текста. Если первый символ в строке #, то программа считает, что текст на этом закончился. Это можно использовать для поиска ошибок в исходном файле или для определения части текста, которая не генерится.
Вот список исправлений, которые я наметил. Если кто-то хочет внести свои - то допишите.
И так TODO:
1. Динамическая подсветка (готово)
2. Синомайзер (готово)
3. Добавить вставку ANSI символов в интерфейс
4. Исправить морфологию
Исправить ошибки:
1. при выделении небольших слов (точное число символов не помню) и нажатии на кнопку "мастер быстрого ввода вариаций" - слово не подставляется
2. если ранее было выбрано длинное слово для быстрого ввода вариаций, а потом короткое слово, то подставляется только предыдущий длинный вариант
3. в мастере переборов если минимум превышает максимум - всплывает окошко, эт правильно, но оно всплывает каждый раз, даже при уменьшении минимума каждый раз до тех пор, пока он не сравняется с максимумом.
4. был случай когда внутри мастера переборов, т.е. результата мастера переборов не работал вариант {слово1|слово2}
5. Удаление энтеров
6. Зависание на некоторых текстах
7. выход формы синонимов за границы экрана.