我有一個FASTA文件,其中包含多達2000000個字符串[行]的序列字符串。我編寫的代碼適合較小的文件,但是當文件的大小增長時,文件的速度會變慢(甚至比較小的文件速度更慢)。我感到困惑的是,爲什麼文件大小看起來需要更多時間才能達到10萬次,即使是在第一次迭代中,如果是10,000次,它的運行效率也非常高。例如:我爲每次迭代都放了printf語句。在第一次迭代10,000的情況下需要2 ms。在100000個字符串的情況下,即使第一次迭代需要更多時間,然後2毫秒才能打印等等。爲什麼它可能會這樣慢?性能 - 在C中逐行讀取巨大的FASTA文件C
你能幫我提高效率嗎?甚至可以像使用較小尺寸的文件一樣以相同的速度工作?我正在逐行閱讀。 我的代碼是
#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]。 –