当前位置: 首页 > 编程语言 > C#

计算硬盘吞吐量共享

时间:2023-04-11 02:43:14 C#

计算硬盘吞吐量我的应用程序创建了一个2GB的文件,需要选择系统上具有足够空间的最快驱动器。我试图通过创建一个文件、设置长度,然后像这样依次将数据写入其中来计算吞吐量:FileInfofile=null;vardrives=DriveInfo.GetDrives();varstats=new列表();foreach(vardriveindrives){do{file=newFileInfo(Path.Combine(drive.RootDirectory.FullName,Guid.NewGuid().ToString("D")+".tmp"));}while(file.Exists);尝试{使用(varstream=file.Open(FileMode.CreateNew,FileAccess.Write,FileShare.None)){varseconds=10;varframeRate=120F;varbytesWritten=0L;varbytesPerPixel=1;varwatch=new秒表();varvideoSize=newSize(1328,1048);varbuffer=newbyte[(int)(videoSize.Width*videoSize.Height*bytesPerPixel)];stream.SetLength((long)(videoSize.Width*videoSize.Height*bytesPerPixel*frameRate*seconds));观看.重启();for(inti=0;i(s.DriveInfo.RootDirectory.FullName.Substring(0,2).ToUpper()+""+ConversionUtilities.ToIsuBytesNotation(s.DataTransferRate)+"ps")))+Environment.NewLine+Environment.NewLine+“测试结果可能因访问驱动器的其他应用程序而异。”+Environment.NewLine+Environment.NewLine+“尝试使用配置为生产环境的系统进行测试。”;MessageBox.Show(消息);我得到的结果毫无意义:DesktopD:4.15GBps//SSD。F:4.09GBps//硬盘(5200RPM)。E:4.06GBps//HDD(7500RPMRPM)。C:4.03GBps//SSD。H:2.45GBps//Ram磁盘!!!笔记本电脑E:981.24MBps//Ram磁盘。C:100.17MBps//硬盘(5200RPM)。D:055.94MBps//硬盘(5200RPM)。相同代码在我的开发笔记本电脑上的结果更可信。上面的代码有什么问题吗?如果不是,您如何解释SSD的吞吐量为4GBps,而RamDisk的吞吐量最高为2.5GBps?我知道影响吞吐量的因素很多,而且基准测试软件非常复杂。然而,在我的例子中,以每秒120帧的速度写入2GB的视频文件而不丢帧是至关重要的,上面的代码应该为用户提供一个快速而肮脏的建议,以保存瞬态视频帧驱动器。这些帧随后经过后处理并转码为只有几兆字节的MP4video。最后,我尝试了上面的代码和SysinternalsContig.exe以确保连续布局以获得更好的HDD性能。但是,我没有注意到性能上的差异,这表明该文件的碎片化程度不足以开始(创建时)。如果程序将数据写入磁盘,会发生许多不同的事情:首先将数据写入RAM缓冲区,然后在将数据传输到下一个阶段之前以写入程序的方式确认操作。然后数据被写入硬盘控制器,它可以做自己的缓存。然后将数据写入硬盘驱动器,而硬盘驱动器又可以进行自己的缓存。使用高级软件测量实际吞吐量很复杂。一种可能性:写入一个非常大的文件,预计比操作系统/控制器/硬盘驱动器中的任何一个托架都大得多。这可以很好地估计持续写入速率。以上就是《C#学习教程:计算硬盘吞吐量份额》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: