В частности для индексирования строк неограниченной длины или групп строк.
Готовую нашел здесь (реализация MD5), но уж очень медленно работает и оптимизировать её не получится - в 1С нет быстрой работы с битами.
Вот нашел выход. Спасибо сайту за теорию http://www.strchr.com/hash_functions
Оказывается своя хэш функция - это просто.
Скорость для 64 битного хэш (кво в минуту):
Для строки "http://avprog.ru/public/edit/" - 55000
Для этого текста(600 символов) - 3048
Пример использования с тестом скорости работы в разделе файлов.
Скорость расчитывается как количество хэшей из заданного Вами текста за минуту.
http://www.strchr.com/hash_functions
//////////////////////////////////////////////////////////////////////
//СтрокаХэш - исходный текст
//hash- начальное значение hash
// М - множитель (влияет накачество хэш и производительность)
// TABLE_SIZE - размер получаемого ключа, как Максимальная величина + 1
Функция Хэш(СтрокаХэш, hash=0, M = 31, TABLE_SIZE = 18446744073709551616)
//TABLE_SIZE = 18446744073709551615; 64 бита
//M = 31; Умножитель
ДлинаСтроки = СтрДлина(СтрокаХэш);
Для к=1 по ДлинаСтроки цикл
hash = M * hash + КодСимвола(Сред(СтрокаХэш,к,1));
конеццикла;
возврат hash%TABLE_SIZE;
КонецФункции
// Для ускорения работы с большими текстами их надо передавать блоками
// Данная функция разбивает исходный текст (Параметр "Строка") на блоки
// длиной ДлинаБлока и вычислет хэш блоками возвращая результат для всего текста.
Функция ХэшБлоками(Строка, ДлинаБлока = 64, hash = 0, M = 31, TABLE_SIZE = 18446744073709551616)
НачПозиция = 1;
ДлинаСтроки = СтрДлина(Строка);
Пока НачПозиция<=ДлинаСтроки цикл
hash = Хэш(Сред(Строка, НачПозиция, ДлинаБлока), hash, M, TABLE_SIZE);
НачПозиция = НачПозиция + ДлинаБлока;
КонецЦикла;
возврат hash;
КонецФункции
Файлы обработки:
- Prostaya i bystraya hjesh funkciya (hash) sredstvami 1S.epf Для скачивания нужна регистрация
В этой группе 1С
- Пример работы с Word через OLE. Часть 2. Редко используемые элементы.
- Хранение рисунков на FTP
- Работаем с датами в запросе
- Один способ вносить изменения в типовую конфигурацию без проблем с обновлением
- Фоновые задания в файловом режиме 1С 8.x средствами 1С без дополнительных компонент
- Создать ярлык для базы 1С - просто!... Но не тривиально.
- Универсальная подсистема "Фабрика событий" v 1.0 + "Доп. права доков" v 2.0 + "Сканы доков" v 2.0
- 1с 8 для пользователей чайников