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