С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
emission
0 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 6
#1

Хранение большого количества однотипных данных - C++

05.02.2016, 10:22. Просмотров 356. Ответов 13
Метки нет (Все метки)

Добрый день.
Подскажите, каким образом хранить данные для программы? Например, у меня имеется 1000 - 300 000 строковых данных, которые мне нужно сравнивать с определёнными вводимыми значениями каждый раз при вызове программы. Где их хранить? Массив, контейнер или отдельный файл (другие варианты, например, таблица БД)? Насколько будет различаться производительность?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2016, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хранение большого количества однотипных данных (C++):

Хранение большого количества бинарных данных - C++
Возник вопрос связаный с хранением данных: Мне нужно сохранять массивы бинарных данных (каждый массив - 4096 элементов по 1 байту) Если...

Хранение большого (15000) количества строк в строковом массиве - C++
Здравствуйте! Мне нужно создать генератор слов. Я решил пойти путем словаря + генератор псевдослучайных чисел. Файл сделал вложением,...

Функция проверки большого количества переменных - C++
Нужна помощь в написании функции, которая проверяла бы введенные пользователем переменные, т.к.переменных много, а писать цикл для каждого...

Генерация большого количества случайных чисел - C++
Подскажите, пожалуйста, как можно ускорить процесс генерации нескольких сотен миллионов чисел? В цикле это занимает много времени, есть...

Обработка наборов однотипных данных - C++
помогите пожалуйста составить программу, которая переформирует заданную матрицу так, чтобы ее строки располагались в порядке убывания...

Stack overflow при создании большого количества объектов - C++
Здравствуйте Товарищи! Выскакивает ошибка:"Необработанное исключение в "0x000000013fbc1ba7" в "Динамический массив (malloc).exe":...

13
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
05.02.2016, 10:54 #2
Как часто происходит сравнивание?
0
Ofelion
13 / 13 / 7
Регистрация: 26.01.2015
Сообщений: 203
05.02.2016, 10:57 #3
Ну из того, что я знаю, это массив - совокупность однотипных элементов.
0
emission
0 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 6
05.02.2016, 11:05  [ТС] #4
Как часто происходит сравнивание?
От 1 до, возможно, нескольких сотен.
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 11:12 #5
emission,
которые мне нужно сравнивать с определёнными вводимыми значениями каждый раз при вызове программы.
тогда влюбом случае вне программы...думаю что просто в файле будет быстрее чем выдерать из БД.
считываешь файл записываешь в лист или вектор и сравниваешь...
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
05.02.2016, 11:15 #6
Цитата Сообщение от emission Посмотреть сообщение
От 1 до, возможно, нескольких сотен.
Интересная частота...
Если не прибегать к хитростям, то просто создай массив указателей на строки.
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 11:17 #7
castaway, а хранение строковых данных после завершения программы?
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
05.02.2016, 11:18 #8
Цитата Сообщение от emission Посмотреть сообщение
которые мне нужно сравнивать с определёнными вводимыми значениями каждый раз при вызове программы.
Давай разберёмся. Один вызов программы - одно сравнение?

Добавлено через 1 минуту
Цитата Сообщение от ThePlague Посмотреть сообщение
castaway, а хранение строковых данных после завершения программы?
Поясните вопрос.
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 11:21 #9
castaway, просто как я понял emissionа, ему нужно гдето хранить от 1к до 300к строковых переменых...и каждый раз сравнивать их с входящими данными при вызове программы...(поправте если не так понял)...

или отдельный файл (другие варианты, например, таблица БД)? Насколько будет различаться производительность?
вот тут
0
emission
0 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 6
05.02.2016, 11:31  [ТС] #10
Цитата Сообщение от castaway Посмотреть сообщение
Давай разберёмся. Один вызов программы - одно сравнение?
Вызов программы - обязательно одно сравнение, остальные - в вызванной первым сравнением.
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
05.02.2016, 11:33 #11
emission, в данной постановке нет смысла в БД. И разницы между массивом, вектором или списком тоже нет. Пробуй. Замеряй время.

Цитата Сообщение от ThePlague Посмотреть сообщение
тогда влюбом случае вне программы...думаю что просто в файле будет быстрее чем выдерать из БД.
Быстрее будет прочитать весь файл за раз.
0
emission
0 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 6
05.02.2016, 12:56  [ТС] #12
Т.е., из всего вышеописанного получается, что оптимальный вариант - хранить массив строк в отдельном, подключённом к программе, файле? (в данном случае)
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
05.02.2016, 13:05 #13
Цитата Сообщение от emission Посмотреть сообщение
Т.е., из всего вышеописанного получается, что оптимальный вариант - хранить массив строк в отдельном, подключённом к программе, файле?
Загрузи весь файл за раз, или спроецируй, если это позволяет ОС.
1
Байт
Нарушитель
Эксперт C
16695 / 10959 / 1688
Регистрация: 24.12.2010
Сообщений: 21,379
05.02.2016, 15:42 #14
Имхо, строки должны быть отсортированы и искаться чем-то вроде деления пополам.

Добавлено через 2 минуты
Или делать что-то вроде кэша.
А место хранения - дело десятое. Память позволит - хранить в памяти. Не позволит - в массиве.
0
05.02.2016, 15:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2016, 15:42
Привет! Вот еще темы с ответами:

Наследование static атрибута(хранение количества объектов наследуемых классов) - C++
Есть абстрактный класс base, от него наследуются 3 класса child1 child2 child3. Создается множество объектов одного из этих трех классов, в...

Киносеанс - хранение данных, замена данных, добавленных новых - C++
Вообщем задача : На киносеанс популярного кинофильма осуществляетсябронирование билетов. С помощью списка организовать продажу N билетов....

Обработка большого массива данных на C++ - C++
Суть проблемы. На работе, дали задание проработать 1 большой файл (вывести графики результата анализа и т.д.). Файл: двоичный. ~ 71 Мб ...

Хранение данных - C++
Пробую написать небольшую рпгшку на С++ + SDL и возникла нужда где-то хранить кучу потенциальной информации, начиная с описания карты,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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