Задать вопрос
  • Как сравнить несколько строчных массивов?

    @zedxxx
    1. Вычислить хэши строк во всех массивах при помощи какой-нибудь быстрой функции, чтобы давала не очень большое число коллизий и на выходе был Integer или Int64, для скорости сравнения.

    2. Далее уже сравнивать эти хэши, причём, при совпадении нужно выполнять полное сравнение строк. Заодно можно подсчитывать была коллизия или нет. Сравнивая число коллизий которые даёт выбранная хэш функция и время хэширования строк, можно будет сделать вывод о приемлемости той или иной функции.

    В качестве хэш функции можно взять crc32с из фреймворка mORMot, говорят что она оптимизированная и очень быстрая: blog.synopse.info/post/2014/05/25/New-crc32c%28%29... Она у них используется для хэш таблиц по-умолчанию.

    Вот тут есть сравнительные тесты: https://www.delphitools.info/2014/08/25/string-has...

    Ещё можно взять библиотеку от гугла - CityHash она умеет считать хэши 32/64/128/256 бит. Тоже, говорят, быстрая. Используем для 64-битных хэшей, вот тут есть бинарники и обёртка для Delphi: https://bitbucket.org/sas_team/cityhash/src/7c7c73...
    Ответ написан
    Комментировать