我正在使用 BinaryReader
读取二进制文件。我想计算使用BufferedStream
缓冲输入时磁盘访问的数量。不幸的是,这个课程已密封,所以我无法覆盖手动计数的方法。
有什么方法可以使用标准库进行操作?还是我必须写自己的缓冲二进制阅读器来实现这一目标?
您可以从在BufferedStream(Stream,int)构造函数中指定的缓冲区大小进行计算。默认值为4096字节。假设您不搜索(),则文件访问的数量为 (filesize + bufsize - 1) / bufsize
。
总体过度的方法是牢记您可以链接流。创建自己的流派生类,只需计算需要从基础流提供数据的read()方法的调用数即可。将该类的实例传递给BufferedStream构造函数。
均无法让您找出操作系统击中磁盘驱动程序的频率并从磁盘上进行物理传输数据。文件系统缓存位于两者之间,实际数字在很大程度上取决于如何在磁盘缸和扇区映射文件数据。您将从性能计数器中获得有关此信息的信息。实际使用它几乎没有意义,您得到的数字将在另一台机器上繁殖很差。