Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2018-01-01 22:46:27 ЛС | профиль | цитата
Тоды ОЙ

Я внес некоторые исправления. Не принципиальные абсолютно.
1) Изменил имя PArray - неправильно, что оно совпадает с именем типа из share (хотя все и работает)
2) Изменил положение методов в файле (тупой Move) - чтобы лежали группками с предварительным комментарием: группка для строк, для целых, для действительных.

Посему, файл теперь другой немного: http://forum.hiasm.com/getfile/38278

--- Добавлено в 2018-01-01 23:14:03

3042, вот чего я думаю про твой код.
Увеличение длины массива на 1 много-много раз приводит дельфячий реаллокатор памяти немножечко в состояние ступора...
Мне так показалось. Как, впрочем, и для оригинального кода.

KOL-вский TList поступает немножечко по другому. Count - это один разговор, а Capacity - это другой разговор, и именно он определяет количество реаллоцированной памяти. Если Count становится больше Capacity, то реаллоцируется сразу на 25% больше. А не на 1 поинтер.
Здорово экономится на операциях динамического выделения памяти.
Свечку я конечно же не держал, но кажется, что все именно так и происходит.
Где-то я читал (не помню уже где), что Дельфи со строками работает похожим образом. Поэтому многократное добавление одного символа в зад строки не вызывает особых проблем.


И еще. Все эти MoveMemory жрут таки время... И заметно это не на тех файлах, которые Вы, 3042, давали для теста.
Самый плохой случай - обратно отсортированный список (для прямо отсортированного - это просто добавление в зад).
Я брал Ваш файл Книга1.txt и сортировал его в обратном порядке (у меня это запросто делает текстовый редактор)
карма: 9

0
файлы: 1hiArrayFilterRepeats.rar [1.5KB] [621]
Редактировалось 2 раз(а), последний 2018-01-01 23:14:03