Если предполагается работать с очень большим массивом в нескольких потоках, то увеличится ли скорость обработки если этот массив разбить на части для каждого потока?
Здравствуйте, PostMessage, Вы писали:
PM>Если предполагается работать с очень большим массивом в нескольких потоках, то увеличится ли скорость обработки если этот массив разбить на части для каждого потока?
Что значит разбить на части ? Сделать несколько массивов ? Ну будут они теперь лежать по разным адресам виртуальной памяти , в то время как большой массив лежал одним куском, ну и какая от этого польза ?
В конце концов любой массив можно при желании логически рассматривать как несколько масcивов
int a[300000];
int *p1 = a; *p2 = a + 100000, *p3 = a + 200000;
и он разбит на 3 массива
Здравствуйте, PostMessage, Вы писали:
PM>Если предполагается работать с очень большим массивом в нескольких потоках, то увеличится ли скорость обработки если этот массив разбить на части для каждого потока?
Если CPU один, то скорость уменьшится.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth