1
我正在使用循環隊列作爲數據緩衝區。我使用char數組來保存數據,我的問題是當我需要按照原始順序查看緩衝區中的數據時。緩衝區的重新排序佔據了64%的大部分處理時間。我需要這個儘可能優化,因爲我使用這個緩衝區來搜索千兆字節數據的簽名。任何優化建議將不勝感激和/或任何其他建議如何存儲此緩衝區,並輕鬆地將其轉換爲char數組進行處理。在此先感謝高效循環隊列重排
編輯:我道歉我的意思是重新排序是如果數據是「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;
}
你需要的數據按照您輸入的順序。但無法理解重新排序的部分。 – phoxis
我不明白你爲什麼需要「重新排序」它。 – trutheality