70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
||||||
1 | ||||||
Нормально ли, что Vector так медленно заполняется ?09.04.2019, 12:30. Показов 1783. Ответов 19
Метки нет (Все метки)
Здравствуйте,
Подскажите пожалуйста, это нормально, что данный код выполняется 20 секунд!?
0
|
09.04.2019, 12:30 | |
Ответы с готовыми решениями:
19
Не заполняется переменная по ссылке. Что не так? vector - что не так? OpenGL что не так в коде? вроде все нормально Почему не заполняется массив vector? |
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
09.04.2019, 12:31 | 2 |
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
|
09.04.2019, 12:35 [ТС] | 3 |
Да просто на часах, с момента запуска до вывода в консоль create. Тут же счет не на милисекунды.
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
09.04.2019, 12:37 | 4 |
Optimus11, у меня и секунды не заняло..
0
|
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
09.04.2019, 12:40 | 5 |
Сообщение было отмечено Optimus11 как решение
Решение
Optimus11, в Release запускай и смотри.
1
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
|
09.04.2019, 12:42 [ТС] | 6 |
Блин ну и прикол, выбрал release, посчиталось за секунду.
Но, почему в debug настолько дольше считается ?
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
||||||
09.04.2019, 12:46 | 7 | |||||
https://rextester.com/NQBHZ57264
Код
Create: 282.366 milliseconds (0.282366 sec )
1
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
||||||
09.04.2019, 13:00 [ТС] | 8 | |||||
У меня появился немного другой вопрос, запуская в релиз, изменил только кол-во 1000 на 100 000.
На момент запуска оперативка заполнена на 2.6 Гб, запускаю, и заполнение оперативки начинает резко увеличиваться и достигает 3.8 после чего:
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
09.04.2019, 13:06 | 9 |
Фрагментация памяти. После чего не возможность выделить новый кусок памяти в куче, вот и имеем краш программы.
0
|
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
|
|
09.04.2019, 13:07 | 10 |
Ну конечно она сильно жрется - ты используешь контейнер, который хранит какие-то свои дополнительные данные и, кроме того, еще записываешь в него 2 миллиона строк
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
09.04.2019, 13:11 | 11 |
хмм... у меня в дебаг режиме максимум 700мб сожрала
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
|
09.04.2019, 13:11 [ТС] | 12 |
Понял.
А возможноли сократить использумую память , если использоаать динамический массив за место вектора ?
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
|
09.04.2019, 13:11 | 13 |
debug - "дебаг", или "отладочная версия" продукта.Сборка, специально предназначенная для того, что бы у программиста была возможность отладить программу. Поэтому, дебажная сборка не использует оптимизацию (это нужно, что бы можно было пошагово отлаживать программу) Кроме того, дебажная сборка включает в себя 100500 всевозможных дополнительных проверок всего и всея. Это нужно, что бы у программиста была возможность выявить и устранить возможные ошибки. При релизной сборке код оптимизирован, и из него были исключены все эти 100500 проверок. Поэтому, релизный код часто работает значительно (в несколько раз) быстрее, чем дебажный.
0
|
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
|
|
09.04.2019, 13:15 | 14 |
Да, используемая память сократится, но не забывай про 2 миллиона строк
Добавлено через 1 минуту Подсчитай, сколько нужно памяти для помещения такого количества строк (по 2 и 3 символа с учетом конца строки) и удивись Добавлено через 1 минуту А std::string не позаботится о том, чтобы они хранились настолько оптимально) Он создаст некий буфер, который будет наверняка хотя бы в пару-тройку раз длиннее (зависит от реализации). Так что, если хочешь сократить потребление памяти, используй в данном примере строки в стиле Си
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
||||||
09.04.2019, 13:45 | 15 | |||||
Представьте себе!
А вы осознаете, сколько на самом деле памяти вы запросили? Рассмотрим код: https://rextester.com/JDBWAJ26948
Код
======== count = 20 : Vector_1 = 20 count = 60 : Vector_1 = 40 count = 120 : Vector_1 = 60 count = 200 : Vector_1 = 80 count = 300 : Vector_1 = 100 ... ount = 26130720 : Vector_1 = 32320 count = 26163060 : Vector_1 = 32340 count = 26195420 : Vector_1 = 32360 НЕ ХВАТКА ПАМЯТИ!!! Vector_1: 32380 Vector_2: 1618 count : 26195420 Create: 696.356 milliseconds (6.96356 sec ) Если вам нужно оперировать данными таких колоссальных объемов, то "динамический массив" вас уже не спасет. Для работы с такими объёмами человечество изобрело "базы данных"
2
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
||||||
09.04.2019, 15:04 [ТС] | 16 | |||||
Попробывал вообще по минимум просто:
В VBA массив с большим числом элементов гарантировано записывался.
0
|
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
|
|
09.04.2019, 15:07 | 17 |
Optimus11,
Просто попробуй рази интереса сравнить сколько занимает строка в стиле Си и рядом стоящая c++ строка с таким же содержимым. Потом умножь разницу на количество создаваемых тобой объектов. Добавлено через 27 секунд Кроме того, когда ты записываешь созданный вектор в главный вектор, он не как ссылка туда записывается, а копируется
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
||||||
09.04.2019, 15:20 | 18 | |||||
Вы мне сейчас напоминаете индийского царя Шерама из старой легенды)))
сказка о царе, и его любви к шахматам
ни даже во всем мире не хватит столько пшеницы, что бы выполнить просьбу скромного Сета. Знаете сколько на самом деле записей даст алгоритм с такими циклами? )))
Код
======== НЕ ХВАТКА ПАМЯТИ!!! Vector_1: 9549 Vector_2: 9548 count : 45586926 Create: 1137.86 milliseconds (11.3786 sec ) 45 миллионов, Карл!!!!
0
|
Manowar
|
09.04.2019, 15:51
#19
|
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
|
|
09.04.2019, 17:58 [ТС] | 20 |
Вот я балда!
Я почему то думал, что я пуш бэками в вектор1 всегда в нулевой элемент записываю, и еще удивляюсь, че такое че происходит
0
|
09.04.2019, 17:58 | |
09.04.2019, 17:58 | |
Помогаю со студенческими работами здесь
20
Grid заполняется данными слишком медленно Отчего так бывает, что на одних ПК с запроса из БД SQL Server в Excel таблица экспортируется нормально Очень медленно работает скрипт с журналом событий, это нормально? Нюансы синтаксиса: что означает запись vector<int*> a и vector <int>*a ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |