原V1.0的帖子()已无法编辑,所以开了新帖。
软件(和源码)链接:
①百度云:(拥有完整资料,包括软件自身、操作演示视频和原老版本软件演示视频中的音乐文件分享)
https://pan.baidu.com/s/1iBlKi5hV_kdkkzCgVjblYQ?pwd=0000
②蓝奏云:(因文件大小100M限制,只有软件自身、源码和一个说明用的txt文本文件,以及导航用的、存有百度云链接的文本文件)
https://wwm.lanzouq.com/b0ny5lvuf
③没有百度云VIP账号,想要看操作演示的,
请访问下面这个链接,到B站收看:
(注意!新版的操作演示去掉了音乐欣赏,改由本人实时录音解说,
但上面的百度云链接里还存放着这些音乐文件,也新增了些音乐文件)
https://www.bilibili.com/video/BV18rupeWEt7
软件github地址:https://github.com/ssh-buanshishi/adaptive_multi-thread_crc32c_file_verify_tool
软件详细简介请看V1.0的帖子:
【版本更新详情】
★★★ V1.2兼容性依旧良好,最低可以支持win7(32位),win7之后的版本跑起来应该没问题,至少自己的win10试过了。
适配win10以下(win7)windows控制台的传统cls清屏机制,解决了win7下进度不刷新、堆积起来的问题。
★★★ 兼容旧版本程序生成的记录文件【文件CRC32校验值.txt】 ★★★
★★★ 此版本生成的记录文件【checksum.crc32c】可加”.txt“后缀方便编辑,不会影响校验 ★★★
注意:V1.2操作方式发生了改变,exe文件(和bat启动器)改为接收argv[1]或者双击后弹出文件夹选择框(tkinter窗口可以自适应系统缩放,应该大概率不会模糊)来接受文件夹路径,不再需要复制exe文件夹到目标目录。
建议简单查看操作演示视频(https://www.bilibili.com/video/BV18rupeWEt7)以适应V1.2,也可以自己摸索一下,应该不难的。
新的操作方式也是为了去掉V1.0版本不必要的磁盘写入(V1.0复制文件到目标目录下的这个操作),将程序文件固定下来。
记录文件使用预分配方式写出,极大概率保证了不会出现文件碎片。
升级crc32c的python库至2.7.1版本,
考虑到此库的作者后续可能会放弃python_3.8的支持(也就是win7的支持),建议认准此版本号下载安装,以获得对win7的支持。
此外还改进了些代码的写法。
下面是
至于对更快的读取速度的追求,我已经尝试过pywin32库的win32file模块的CreateFile函数(带【FILE_FLAG_SEQUENTIAL_SCAN】的flag)和ReadFile函数,相当于直接调用windows的文件api,结果相比较python自带的f=open(xxx,mode="rb")和f.read(),提升基本察觉不到。
mmap模块创建memory mapped file也试过,结果速度太垃圾了,自己的nvme固态上的多线程一共只有500~600MiB/s的读取速度(原本可以达到2 GiB/s左右)。
CRC32的计算速度现阶段基本上是受制于硬盘的速度的,我之前写CRC32C校验软件的时候用python测试过,用内存中的随机数据来跑,常见的CRC32(B)的软件算法的速度,能达到5-6GiB每秒。这款CRC32(C)多线程文件校验工具所用到的python库crc32c:
https://pypi.org/project/crc32c/ , https://github.com/ICRAR/crc32c) ,
因为可以调用CPU的SSE4.2指令集中的crc32指令,所以速度更快,可以到15~20GiB每秒(同样采用固定大小的随机内存内容测试),现阶段应该很难找到比这个校验速度更快的校验算法了,MD5和SHA算法我记得也才大概700~900MiB每秒。
SSE4.2指令集现在也普及了,AMD的锐龙,intel七代以上的估计都有。
未来PCIE5.0硬盘的读取速度估计也差不多可以到15GiB每秒,可以说这个crc32c的硬件加速指令算法是可以“战未来”的。
对于这个crc32c的库,说起来我自己也稍微贡献了一部分意见和建议:https://github.com/ICRAR/crc32c/issues/51,这个issue的对话中,头像和52pojie这边一样的就是我。
现在想来,还得谢谢当初的自己,在python3.8维护周期结束前提交了issue,才有了现在已经比较完善的crc32c的2.7.1版本(可以一直用下去的那种),不然未来这个库的作者是否放弃对python_3.8的支持就很不确定了。
我观察过,番剧压制组【Moozzi2】在每次发布的种子的文件夹里都有类似【checksum.md5】的校验文件,说明现在校验文件的工具还是“有市场”的。
虽然sha、md5的安全性比crc32(包括crc32c之内的一系列crc算法)更高,但是crc32c硬件加速指令算法的速度,目前可以说很难找到更快的了。在日常下载影片、番剧、图片的应用场景下,尤其是这种文件比较大的情况下,几乎不会有人有闲工夫逆向破解crc32算法,我们更关心下载的文件是否完整。
所以相信未来crc32c文件校验工具肯定有自己的一席之地。
我也希望这个软件自身或者软件代码,在未来能被更多人用到。
PS:我已经不止一次幻想过番剧压制组用上我的crc32c校验工具的场景了。如果哪位大佬有番剧组的渠道、联系方式,记得向他们推荐推荐这款软件,不求完全替换原来的校验方法,只要多上一个我的软件生成的校验记录就行(但愿未来能实现吧)