假设打开某应用软件,CPU先会将该应用软件的内容从硬盘加载到内存,再加入一些操作系统配置(如注册表等),再链接该应用软件的数据库,获取并通过网络加载你的数据(如近期记录),才能正式打开软件
我们可以看到,就单单打开某应用软件这一操作,看似在操作系统的友好图形用户界面下,只用双击就打开,但实际上内部要进行许许多多的工作。那具体影响这一系列操作的因素有哪些呢?
不难看出,影响因素有CPU、内存、硬盘、网速等等。但实际上,像是载入程序这种工作,CPU的占用非常低,几乎不产生影响,再除开网速的外界因素(链接应用软件数据库的网络延迟)
显然,当内存资源紧缺时,也会产生不利因素。但是,CPU、内存、网速都不产生影响时(除非进行高负载的工作),在正常使用时打开某一应用软件的时间,影响最大的反而是硬盘
以QQ举例:在刚打开QQ时,任务管理器获取的I/O记录
忽略其他I/O与其他字节(非读取非写入的进程(包括文件、网络和设备 I/O)比如控制功能)
读I/O(共3489)、写I/O(共1270)、读字节(共37473680字节合35.7M)、写字节(共8076003字节合7.7M)
如下图为希捷某6T机械的跑分:
读I/O: 3489 / 538= 6.485130 s
写I/O: 1271 / 493= 2.578093 s
读字节: 35.7 / 216.79 = 0.164675 s
写字节: 7.7 / 216.42 = 0.035578 s
以上相加共9.263476 s 左右(理论上,忽略其他外部因素如网速、内存等)
如下图为金士顿A400 Sata3固态的跑分:
读I/O: 3489 / 7347 = 0.474887 s
写I/O: 1271 / 10580 = 0.120132 s
读字节: 35.7 / 29.59 = 1.206488 s
写字节: 7.7 / 43.76 = 0.175959 s
以上相加共1.977466 s 左右(理论上,忽略其他外部因素如网速、内存等)
如下图为目前(截止到2021-10-14)最强民用固态:三星980pro M.2 Nvme
读I/O: 3489 / 22000 = 0.149500 s
写I/O: 1271 / 60000 = 0.021183 s
读字节: 35.7 / 79.72 = 0.447817 s
写字节: 7.7 / 187.77 = 0.041007 s
以上相加共0.659507 s 左右(理论上,忽略其他外部因素如网速、内存等)
以上均采用4K随机读写,按理来说QQ这一应用软件4K-64线程读写更为合适,这个速度只会更快
机械硬盘、Sata3固态、M.2 Nvme固态差距就很明显了。理论上,机械硬盘需要将近9秒,Sata3固态需要2秒,而M.2 Nvme固态只需要0.6秒,这还只是QQ这一占用非常小的应用软件,更别说大型应用软件甚至系统软件了,那时候机械硬盘与固态硬盘差距就真的是一个天上一个地下了
这里Sata3固态与M.2 Nvme固态差距不大的原因是QQ占用很小,当换成其他软件,差距就明显了(比如开机加载操作系统、加载大型应用软件、系统软件等)