Многопоточность приводит к линейному увеличению времени выполнения C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Многопоточность приводит к линейному увеличению времени выполнения C++

Сообщение Anonymous »

Я разрабатываю быструю программу чтения CSV для бэктестера. Для чтения файла csv я сначала прочитал его в строку сразу. После этого я создаю несколько потоков для анализа данных и сохранения их в используемой мной структуре таблицы.
Каждый поток получает начальный и конечный индекс и работает с этой частью таблицы. строка.
При использовании 1 потока время выполнения составляет 6,5 секунд. После этого время выполнения увеличивается почти линейно, если я использую, например, 2 или 4 потока. В моей системе 8 ядер.
Я также подключаю свою рабочую функцию. Атрибут «lines» — это атрибут класса, который представляет собой вектор строки, где каждая строка является строкой CSV.

Код: Выделить всё

void read_csv_worker(pairt){
auto [start,end] = t;
vector
>vec(num_cols - 1); // timestamp also a column but stored explicitly
string timestamp, curr;
int curr_index;
int curr_col;
stringstream line_stream;

for(int i=start;iinsert(vec, timestamp, i);
}
}
Где я создаю свои потоки в другой функции класса:

Код: Выделить всё

int curr_pos = 0;
int chunk_size = num_lines/num_threads;
for(int i=0;i

Подробнее здесь: [url]https://stackoverflow.com/questions/79314848/multithreading-causing-linear-increase-in-runtime-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»