ECG モニターと通信するアプリを作成しています。データは毎秒 250 サンプルの速度で読み取られます。ECG モニターからの各パッケージには 80 バイトが含まれ、これは 1 秒あたり 40 回受信されます。
RandomAccessFile(outputFile, "rws")
RandomAccessFile を使用してみましたが、同期モードと非同期 モードの両方でパッケージが失われました
RandomAccessFile(outputFile, "rw")
。
最近の実験では、MappedByteBuffer を使用してみました。これは非常にパフォーマンスが高いはずですが、バッファーを作成するときにmap(FileChannel.MapMode.READ_WRITE, 0, 10485760)
、10MB バッファーのサイズを指定する必要があります。ただし、これにより、ファイルのサイズは常に 10MB になります。ファイルサイズが保存されている実際のデータ量のみである MappedByteBuffer を使用することは可能ですか?
または、これを達成する別の方法はありますか?これほど頻繁にファイルに書き込むのはナイーブですか?
余談ですが、これは iOS ではまったく問題ではありませんでした。これは、バッファリングなしで実現できます。