Обидно, что мой вариант на коллекции и массиве такой медленный получился. Скорее всего я выбрал не самый оптимальный алгоритм проверки ))
Отметить адрес если на него приходятся разные имена
17.05.2019 14:43:48
|
|
|
|
17.05.2019 14:55:52
Юрий М, приветствую! В вашем варианте, как я понял, не обошлось без двойного цикла, что УЖЕ даёт n^2 сравнений вместо n в одном и том же цикле. Nordheim, сравнивает через Dictionary.Exist, я сравниваю со строкой - так мы уходим от этого ^2… А коллекции…ни в строку сцепить через Join, ни наличие проверить))) ну и, конечно, On Error Resume Next надо из цикла вытащить и включить всего 1 раз - перед циклом. Выключить - после цикла.
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||||||||||
|
|
17.05.2019 16:26:16
Jack Famous, Получилось пораньше). Воть затестил на 506161 строке.
P.S. вот уж не думал что тема вызовет такой интерес)
Изменено: |
|
|
|
17.05.2019 16:32:29
Wild.Godlike, то есть исходник от Nordheim работает 2 секунды, а мои понты 5 - 5,5 минут???
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||
|
|
17.05.2019 16:48:21
Тогда уж попробуйте ещё вариант на уникальных элементах (из модели данных) + ВПР. Быстрее PQ, но до макроса не дотягивает
|
|
|
|
17.05.2019 16:59:20
Jack Famous, Постораюсь сделать для вас исходник без данных.)))) только это наверное завтра будет если до берусь до рабочего компа или уже в понедельник ) И вы не поверите наверное но вариант от :
Dark1589, сделал 3 раза... заняло по времени каждый раз около 1минуты) P.S.
Изменено: |
|||
|
|
17.05.2019 17:24:10
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||
|
|
17.05.2019 17:58:06
Jack Famous, получилось сегодня:) скинул сылку на гуглдиск в личку) только там уже 600000 строк Напишите потом сюда результаты)
|
|
|
|
17.05.2019 18:13:52
Wild.Godlike, добро
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
17.05.2019 19:07:35
|
|||
|
|
17.05.2019 19:37:44
Если диапазон сортирован по адресам, то нужно выходить досрочно из цикла, а я гоняю до конца. |
|||
|
|
17.05.2019 19:56:04
"Все гениальное просто, а все простое гениально!!!"
|
|||
|
|
17.05.2019 21:27:47
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||
|
|
17.05.2019 21:35:55
Так это в коллекции ))
|
|
|
|
17.05.2019 22:47:23
OFF
Юрий М, а это что-то меняет?)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
17.05.2019 22:57:45
Нет. Я просто забыл про это ) Но не думаю, что именно этот момент самый критичный. Причина в том, что я каждый раз перебираю ВЕСЬ массив до конца.
|
|
|
|
17.05.2019 23:12:43
Wild.Godlike, пока что тесты говорят, что сортер (при нынешней реализации) в данном случае не нужен:
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||||
|
|
18.05.2019 18:47:43
Андрей Лящук, Скинул вам тоже в личку
Jack Famous, А можно вас попросить убрать сылку на файл чтобы "малоли что" ) и поисковики не проиндексировали ) |
|
|
|
18.05.2019 19:23:50
Удалил ссылку.
|
|
|
|
19.05.2019 11:58:33
Wild.Godlike, исправил вариант с сортировкой. Поиск по НАСТОЛЬКО длинной строке съедал 99% всего времени. Замена InStr на Like ухудшила ситуацию, преобразование в байты не особо помогло, а RegExp я не решился даже пробовать. Если у кого есть идеи, то я бы послушал… Чтобы выровнять условия (из-за сортировочного метода). Добавлен перенос данных "Begin" с указанного листа (в данном случае только лист "COPY". У автора есть ещё лист с оригинальными данными — также на 600к строк). Вставка итогового массива "End" также вынесена отдельно. Метод PRDX NoSort практически полностью повторяет метод от Nordheim, кроме пары незначительных "шлифовок". Пробовал различные ещё "накруты", но выигрыша не получил… ORIGINAL data (601к строк исходных данных): 1. Теперь все 3 работают примерно одно время и отличием в пределах 0,5 секунды 2. Главный процесс «MAIN»выполняется порядка 3,5 секунд COPY data (ровно 600к строк перемешанных и раскопированных данных из примера): 1. Проигрыш сортировки в 3,5 раза (на 3,5 сек) из-за структуры данных
Я бы всё-таки делал с сортировкой, т.к. в отсортированном массиве потом намного быстрее/проще/удобнее делать абсолютно всё (посмотрите на скрине, что после самой сортировки, получение данных сильно ускоряется), тем более, что на оригинальной структуре, она, даже немного выигрывает.
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||||||
|
|
19.05.2019 12:01:17
|
|||
|
|
24.05.2019 13:56:03
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||||
|
|
||||