Задача: Есть буфер (массив) который периодически изменяется и обрабатывается. Мне требуется обрабатывать вновь появившиеся данные + сохранять часть. Т.е. обрабатывается вновь прибывший буфер и часть старого.
Я подумал зачем заниматься перезаписью и реализовал решение аналогичное примеру ниже:
int a[] = {1,2,3,4};
int b[] = {5,6};
int* c[6];
for(size_t i=0; i<4; i++){
c[i] = a+i;
}
for(size_t i=0; i<2; i++){
c[i+4] = b+i;
}
for(int i=0; i<6; i++){
printf("%d\n", c[i][0]);
}
Вывод:
1 2 3 4 5 6
.
Т.е. я иду по массиву неизменяемых указателей и работаю с ним.
Является ли это быстрым решением? Большой буфер, кусочек старого требуется маленький. Или будет быстрее и правильней создать еще один массив и туда переносить все через memcpy?
Подскажете литературу в этом направлении (как правильно писать быстрый код, связь с ассеблером, связь с механизмами ОС, распараллеливание)?