Я использую кольцевую очередь в качестве буфера данных. Я использую массив символов для хранения данных, и моя проблема в том, когда мне нужно просмотреть данные в буфере в их первоначальном порядке. переупорядочение буфера занимает большую часть времени обработки с 64%. Мне нужно, чтобы это было максимально оптимизировано, потому что я использую этот буфер для поиска сигнатур в гигабайтах данных. Будем весьма благодарны за любые предложения по оптимизации и / или любые другие предложения о том, как сохранить этот буфер и легко преобразовать его в массив символов для обработки. заранее спасибо
edit: Я прошу прощения за то, что я имею в виду, если переупорядочить, если данные «abcdef», то есть большая вероятность, что буфер будет выглядеть как «defabc», поэтому мне нужно изменить порядок буфера на «abcdef»
структуры очереди:
typedef struct item{
unsigned char* data;
int length;
} item;
typedef struct queue{
unsigned char *data;
int front;
int back;
int length;
int size;
} queue;
функция заказа:
int toStr(queue *ptr, item *ret){
int length;
int i;
int j;
int back = ptr->back;
int size = ptr->size;
char* tmp;
char* tmp_data;
if(ptr->length == 0){
return 0;
}
tmp = ret->data;
ret->length = ptr->length;
tmp_data = ptr->data;
i = ptr->front;
j = 0;
while(i != back){
//ret->data[j] = tmp_data[i];
tmp[j] = tmp_data[i];
++i;
++j;
if(i > size){
i = 0;
}
}
return 1;
}