私は2000000文字列[行]までのシーケンス文字列を含むFASTAファイルを持っています。私は小さなサイズでうまくいくコードを書いたが、ファイルのサイズが大きくなるとそれは遅くなる(ファイルの速度が遅くなっても遅くなる)。私は、ファイルサイズが1万の場合に非常に効率的に実行される最初の反復でも、100,000であると考える理由は混乱しています。 例:私は繰り返しごとにprintf文を置く。 10,000回の最初の反復の場合、2ミリ秒かかる。 100000文字列の場合でも、最初の反復では印刷に2 ms以上かかる場合があります。なぜそんなに遅くなるの?パフォーマンス - C言語で行ごとに巨大なFASTAファイルを読み取る
小さいサイズのファイルと同じように効率を上げたり、同じスピードで動作させる方法を教えてください。私はそれを1行ずつ読んでいます。 私のコードは
#include "kseq.h"
KSEQ_INIT(gzFile, gzread)
int z=0;
fp = gzopen(dbFile, "r"); //Read database Fasta file into host memory
seq_d = kseq_init(fp);
while ((d = kseq_read(seq_d)) >= 0) {
unsigned char *b = (unsigned char *)malloc(sizeof(unsigned char) * 256);
memcpy(b, seq_d->seq.s, 256);
....
do work with b
....
............
z++
free(b);
}
kseq_destroy(seq_d);
gzclose(fp);
あなたが記述するスケーリングの動作の種類は考えられますが、あなたが提示したコードの断片には説明がありません。問題を整理する際には、[mcve]を提示する必要があります。 –