3042 писал(а):
А как же это:Вариант оригинала (и Ваш - тоже) имеет асимптотику (предположим, для файла "без повторов") O(N^2), а "делением пополам" - O(N*ln(N)). Результат сравнения этих асимптотик достаточно очевиден...
В Вашем случае ускорение получается потому, что отсутствует операция динамического создания/уничтожения копии строки. Это динамическое созидание делает TStrList.Items. А TStrList.IndexOf просто сравнивает строки, как разыменованные PChar-ы.
Так мне показалось...
3042 писал(а):
Ну, вот сделал для примера разные файлы по 10 000 строк3042 писал(а):
какой алгоритм следует оставить в компоненте?Если на Ваших тестах "быстрее по-любому", тогда эта модификация разумна. Если "обратная несовместимость" не напрягает...
И, конечно же, во многом разумность теряется, если не сделать аналогичное для Integer и Real.
В общем, возиться надо.