Форум программистов, компьютерный форум CyberForum.ru

Скорость выполнения. - C++

Восстановить пароль Регистрация
 
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
23.06.2010, 12:04     Скорость выполнения. #1
Есть консольное приложение, работающее с огромными текстовыми файлами, сравнивает их, читает, записывает и т.д.

Судя по диспетчеру задач, тратится 223-224 мб оперативной памяти.

Так вот хочется ускорить выполнение программы, допустим как-то заставить использовать уже 2-3 гб оперативки. Как это реализовать?

Или есть другие варианты? По-возможно поподробнее.

Работаю в Visual Studio 2010, C++.

Буду благодарен за любые ответы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
manido
1 / 1 / 0
Регистрация: 22.06.2010
Сообщений: 6
23.06.2010, 12:08     Скорость выполнения. #2
На програмку можно взглянуть?
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
23.06.2010, 13:14  [ТС]     Скорость выполнения. #3
Я лучше объясню суть:
3 текстовых файла: 30, 70, 40 тысяч строчек в каждом. Идёт поиск уникальных строчек и запись их в отдельный файл. То есть каждая строчка сравнивается с каждой, при определённых условиях продолжается сравнение, при некоторых переход к новой строке. В общем с алгоритмом проблем нет, волнует скорость выполнения.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
23.06.2010, 13:26     Скорость выполнения. #4
У тебя алгоритмическая затыка. Сложность описанного алгорима O^2, а может быть, и O^3.... Тебе нужно не "сравнивать каждую с каждой" строчки, а:
1. читать из файла строчки,
2. тут же считать хеш строки (или ее "нужной" или "значащей" части),
3. хеши организовать в бинарное дерево или отсортированный массив, и по нему сразу же искать совпадения хешей. Если хеш не найден в таблице - добавить (ну и ссылки на строки где-то тут....). При выборе хорошей хеш-функции совпадение хешей == совпадение строк.
Вот где-то так. Это будет работать довольно шустро, сложность будет вряд ли сильно больше O. Конечно, возможны какие-то особенности описанного алгоритма, исходя из твоей конкретной задачи.

PS: если какие-то дохлые 70 тыс.строк считаются "огромным" файлом.... :-)) - развеселило.
Yandex
Объявления
23.06.2010, 13:26     Скорость выполнения.
Ответ Создать тему
Опции темы

Текущее время: 21:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru