![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 16
|
![]()
Доброго времени суток!
Есть 2 файла: 1) 2 500 000 строк 2) 100 000 строк Нужно максимально быстро проверить наличие строки из первого файла во втором файле. TStringList отбрасывается сразу т.к. первый файл в него просто не загрузится. TextFile был отброшен из-за скорости, обработка длилась очень долго. Последняя реализация была на TStringStream Код:
Код:
Код:
Последний раз редактировалось jskorvin; 20.11.2011 в 01:42. Причина: считать разучился, 2 и 3 попутал |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 16
|
![]()
udp: сорри, что не в тот раздел запостил, думал "общие вопросы дельфи" наиболее подходящий.
Я давно уже не студент и пишу для себя, слова "как правильно выполнить" подразумевают как это нужно делать, а не как написано в учебниках. Под рукой программа которая выполняет похожую задачу (отсев дубликатов строк) за 3-4 минуты, моё же творение в легкую тратит на ту же задачу час с лишним =( С количеством строк до 100 000 я справляюсь легко, а вот на 2 500 000 строках проявляется моя безграмотность в вопросе.. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Честно говоря, не понятно в чём вобще вопрос, т.к. 3-4 минуты на лукап 2.5М строк — это тоже много, не говоря уже о часах.
Вот я случайно вместо 2.500.000 входных строк сформировал файл на 25.000.000 строк (700MB), и, соответсвенно, файл на 1.000.000 строк для поиска (30 MB). Первый файл грузить куда-либо, естественно, не нужно, всё, что от него нужно — это просто читать строки одну за другой. Второй файл (повторюсь, на 1М строк), легко грузится в TSringList и сортируется секунд за 15. Далее обычный цикл с подсчётом, можно добавить запись новых строк в третий файл, это не принципиально. Вся программа отрабатывает минуты за 2. Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отсортировать строки массива(Pascal) | Cas01 | Помощь студентам | 0 | 15.05.2011 16:44 |
Как быстро сложить связанные строки с формулой | Tidus | Microsoft Office Excel | 8 | 31.05.2010 10:16 |
Как быстро перемешать строки? | zver777 | Общие вопросы Delphi | 5 | 23.08.2009 20:50 |
как отсортировать массив под данный отрезок и как минимум и максимум из него найти | SIEGER | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.11.2008 08:58 |
Как отсортировать | Uhryap | Microsoft Office Word | 2 | 24.02.2007 16:58 |