我正在执行以下代码,用一行中的所有字符的值(指定行q)过滤从一个文件中取出的四行的组,并将过滤后的行写入新文件。
fin = fopen(fname_in,'r') ;
fout = fopen(fname_out,'w') ;
y = 0 ;
w = 0 ;
fprintf(1,'Filtering') ;
while ~feof (fin)
w=w+1 ;
if ~mod(w,50000)
fprintf(1,'.');
end
t = fgets(fin) ;
s = fgets(fin) ;
p = fgets(fin) ;
q = fgets(fin) ;
if all(q(1:len) >= phred+phred_code)
y = y + 1 ;
fwrite(fout,[t s([1:len end]) p q([1:len end])]) ;
end
end
fclose(fin) ;
fclose(fout) ;
代码正常运行,但运行需要很长时间。
还有哪种方法可以加速代码?
感谢
答案 0 :(得分:1)
通常,做更少但更大的读写操作会更快。如果文件足够小,您可以读取整个文件,处理行,然后写入整个文件。如果文件太大,您可以循环读取,处理和写入文件的块而不是单独的行。