Re[7]: Копирование вектора (std::vector)
От: pagid Россия  
Дата: 31.10.19 08:52
Оценка:
Здравствуйте, GhostCoders, Вы писали:

N>>Набросал тест с POD структурой на своём 6-ядерном ноуте и параллельная версия получилась процентов на 10 быстрее. Согласен, что на маленьких данных выигрыша особого не будет. Но на больших объёмах он вполне возможен, почему нет? Особенно если много памяти занимает и она многоканальная.

GC>10 процентов єто как раз "особого віигріша не будет"
Переехал таки в Полтаву? Или на родине завел себе клавиатуру без "ы", но с "є"
Re[8]: Копирование вектора (std::vector)
От: GhostCoders Россия  
Дата: 31.10.19 08:55
Оценка:
Здравствуйте, pagid, Вы писали:

P>Переехал таки в Полтаву? Или на родине завел себе клавиатуру без "ы", но с "є"

Клавиатуру завел.
Третий Рим должен пасть!
Re[9]: Копирование вектора (std::vector)
От: pagid Россия  
Дата: 31.10.19 09:05
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>Клавиатуру завел.

Поздравляю. Но да, каждый деградирует несчастен по своему.
Re[10]: Копирование вектора (std::vector)
От: swingus  
Дата: 01.11.19 02:02
Оценка:
Ну, возможно, тебе приходило такое в голову, что ranges-v3 оперирует рэнжами? И, может быть, ты слышал, что её включили в C++ 20?

Здравствуйте, rg45, Вы писали:

R>Это принципиально разные задачи. Для оптимизации копирования POD-типов доступ к контейнеру не требуется. А для изменения размера контейнера требуется доступ к этому контейнеру. А для этого должна существовать версия функции, которая принимает range (именно range, а не итератор). А где эта функция, она сущетвует в природе? В этом же был вопрос.


R>Я еще на всякий случай хочу уточнить, ты понимаешь, что НА ИМЕЮЩИХСЯ вариантах задача изменения размера контейнера во время копирования не решаема? Или не понимаешь?
Re: Копирование вектора (std::vector)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 01.11.19 02:13
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Есть некоторая структура Measure_Simulation, которая включает в себя достаточно много полей типа int, long, long double, char*, bool.

RF>И есть вектор (std::vector) measuresvector, каждый элемент которого относится к типу Measure_Simulation. Этот вектор имеет 40 тысяч таких элементов.
RF>Я копирую содержимое вектора measuresvector в другой вектор measuresvector2, используя следующий код:

RF>
RF>std::back_insert_iterator<std::vector <Measure_Simulation> >  toV(measuresvector2);
RF>std::copy(measuresvector.begin(),measuresvector.end(),toV);
RF>

RF>Этот процесс копирования занимает 20 секунд.

RF>Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать?


Если "достаточно много полей" — это не миллионы, то проблема явно не в приведённой строке.
Ce n'est que pour vous dire ce que je vous dis.
Re[11]: Копирование вектора (std::vector)
От: rg45 СССР  
Дата: 01.11.19 07:14
Оценка:
Здравствуйте, swingus, Вы писали:

S>Ну, возможно, тебе приходило такое в голову, что ranges-v3 оперирует рэнжами? И, может быть, ты слышал, что её включили в C++ 20?


Вообще, мне много всего приходило и продолжает приходить в голову. Но почему бы тебе просто не ответить на вопрос
Автор: rg45
Дата: 30.10.19
?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[12]: Копирование вектора (std::vector)
От: swingus  
Дата: 01.11.19 18:56
Оценка:
Да, алгоритмов, принимающих контейнер, в ranges v3 нет. Я был неправ. Единственное, что меня частично извиняет, это то, что в boost.ranges v2 такие алгоритмы есть — push_back(), push_front() & insert().

Здравствуйте, rg45, Вы писали:

R>Вообще, мне много всего приходило и продолжает приходить в голову. Но почему бы тебе просто не ответить на вопрос
Автор: rg45
Дата: 30.10.19
?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.