コールバックのデータに基づいて、別のファイルに書き込みたいコールバック関数を扱っています。
たとえば、ある呼び出しでは、january.csvに書き込みたい場合がありますが、別のデータを使用した別の呼び出しでは、代わりにjuly.csvになります。事前に決定されたシーケンスはありません。各コールバックの任意の月になる可能性があり、事前に知る方法がありません。january.csv(実際にはすべての月)は複数回書き込まれます。
これらのコールバックは非常に迅速に発生するため、このコードをできるだけ効率的にする必要があります。
私が取る素朴なアプローチは、毎回次のコードを使用することです。
ofstream fout;
fout.open(month_string);
fout<<data_string<<endl;
fout.close();
問題は、month.csvファイルを継続的に開いたり閉じたりしているため、これがあまり効率的ではないように見えることです。これをより速くするために、january.csv、february.csvなどを常に開いたままにしておくと言うことができるより速い方法はありますか?
編集:私はLinuxで/ dev / shmに書き込んでいるので、I/Oの遅延は実際には問題ではありません。