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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
#1

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

23.06.2010, 12:04. Просмотров 651. Ответов 3
Метки нет (Все метки)

Есть консольное приложение, работающее с огромными текстовыми файлами, сравнивает их, читает, записывает и т.д.

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

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

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

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

Буду благодарен за любые ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2010, 12:04     Скорость выполнения.
Посмотрите здесь:

от чего зависит скорость выполнения программы C++
Скорость рандома C++
скорость сортировки C++
C++ Скорость выполнения операторов
C++ скорость обработки
Скорость выполнения, а так же работа с дв. файлами C++
C++ С++ Скорость компиляции
C++ скорость звука
C++ Set, скорость
Как узнать скорость выполнения программы? C++
Скорость выполнения delete C++
Найти количество счастливых билетов учитывая скорость выполнения программы C++

Искать еще темы с ответами

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru