map или чтение файла (dll на c++)

Страницы: 1
RSS
map или чтение файла (dll на c++)
 
пишу dll на C++ для КВИКа (вызывается через Lua)
Схема действий такая.
Десятки файлов, каждый по 50-100 тысяч строк хранят биржевую информацию, которую я каждый день записываю. Тестер будет прочёсывать множество таких накопленных файлов.
Поиск наилучшего параметра будет проходить обычным брутфорсом, например,
параметр А прогнать на каждом из файлов, меняя значение параметра с 1 до 100, то есть сто итераций.
Какой путь лучше избрать с точки зрения скорости исполнения?
1. Значения из файла (те самые 50 тысяч строк) считываются в оперативную память и хранятся в массиве map. Робот прогоняет 100 значений параметра на содержимом этого map.
2. На каждой итерации робот читает файл строчку за строчкой, то есть каждый раз обращается к тексту, не запоминая содержимое файла.
Что будет быстрее?
Попробовать оба варианта мне будет сложно из-за слабых программистских навыков, поэтому прошу опытных людей подсказать лучший путь.  
 
Цитата
Let_it_go написал:
Попробовать оба варианта мне будет сложно из-за слабых программистских навыков, поэтому прошу опытных людей подсказать лучший путь.
Лично мне кажется принципиальным вот что. Если вы пришли в "мир С++" в поисках эффективности такой подход не прокатит. Общепринятый (или универсальный) вариант решения той или иной задачи не обязан бытиь оптимальным в вашем конкретном случае. Вам придется вникать в то что "происходит под капотом" чтобы убедиться что эффективно решается именно ваша задача а не какая-то воббще.

Например, для хранения в памяти кучи строк не связаных особо ничем  кроме порядка следования (содержимое "абстрактного" текстового файла) стереотипным является использовать динамический массив. И чаще всего это будет std::vector<string>. Но если о строках известно что-то специальное может оказаться эффективнее другой строковый класс или другой контейнер.
Вы вот почему-то упоминаете именно map. Возможно для вашей конкретной задачи и действительно лучше map, но из того что вы написали такое предположение сделать невозможно, недостаточно данных.

Аналогичные мысли по всем остальным пунктам - чтение из файлв, сравнение строк, парсинг строк и так далее. Все это можно делать более чем одним способом, иногда какой-то из них может оказаться "неожиданно" на пару порядков эффективнее других.
Если поделаете замеры у вас "узкое место" сожет быть вовсе и не чтение. А может и правда чтение, опять же нужно намного больше данных чтобы как-то обосновано судить. И врядли у кого-то найдется время делать такие суждщения за вас, стоит освоить самому если уж считаете важной скорость.
 
Let_it_go, вы зря используете форум, специфичный для вопросов вокруг квика, для своих вопросов обо всём на свете.
есть прекрасный сайт stackoverflow, там можете спросить общие вопросы по программированию.
там аудитория куда больше.
и скорее всего там 90% ваших вопросов уже задавались и были отвечены. вам на это быстро укажут
например гугл подсказывает такой вариант
https://stackoverflow.com/questions/10836609/fastest-technique-to-read-a-file-into-memory

не забудьте купить диск SSD, я думаю вам это сильно поможет :)
 
Цитата
Let_it_go написал:
пишу dll на C++ .......
...
Попробовать оба варианта мне будет сложно ...
чё? прям оба? это из двух десятков та?

.. поржал как следует ...

Щикарно из...лагаете  ...

пешы есчо .... товариЩ  :-)=)

Цитата
Павел Bosco написал:
не забудьте купить диск SSD, я думаю вам это сильно поможет :)
ага, ходить с открытыми глазами через дорогу тоже сильно помогает ... инфа 100%

:))
Страницы: 1
Читают тему (гостей: 1)
Наверх