.Net6与Framework不同方式获取文件哈希值的性能对比

  • 算法:MD5、SHA1、SHA256、SHA384、SHA512
  • 文件数:200
  • 平台对比:.NET 6 vs .NET Framework 4.7.2

关键代码

csharp 复制代码
// 读取文件夹,获取MD5值
var hashs = new HashAlgorithm[] { MD5.Create(), SHA1.Create(), SHA256.Create(), SHA384.Create(), SHA512.Create() };
var files = dir.GetFiles("*", SearchOption.AllDirectories).OrderBy(f => f.Name).Take(200);
foreach (var hash in hashs)
{
    var map = new Dictionary<string, List<FileInfo>>();
    sw.Restart();
    foreach (var file in files)
    {
        using (var fs = file.OpenRead())
        {
            var md5 = BitConverter.ToString(hash.ComputeHash(fs));
            if (!map.ContainsKey(md5))
                map.Add(md5, new List<FileInfo>());

            map[md5].Add(file);
        }
    }
    sw.Stop();
    var hash_name = hash.GetType().BaseType.Name;
    Console.WriteLine($"{hash_name}:{map.Count},耗时:{sw.Elapsed.TotalMilliseconds}");
}

运行结果

结论

  • .NET 6 的性能确实远比.NET Framework要高;
  • SHA1性能最高,MD5次之,另外几种算法性能远低前两者;
相关推荐
缺点内向5 小时前
C#: 高效移动与删除Excel工作表
开发语言·c#·.net·excel
国服第二切图仔10 小时前
Rust开发实战之密码学基础——哈希计算与对称加密实战
rust·密码学·哈希算法
卿言卿语11 小时前
CC23-最长的连续元素序列长度
java·算法·哈希算法
一抓掉一大把16 小时前
.net实现秒杀商品(Redis高并发)
.net
mudtools20 小时前
解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
低代码·c#·.net
墨染点香20 小时前
LeetCode 刷题【146. LRU 缓存】
leetcode·缓存·哈希算法
主宰者1 天前
WPF CalcBinding简化判断逻辑
c#·.net·wpf
【D'accumulation】1 天前
.NET Framework 4.8 + Microsoft.Data.Sqlite 报 Library e_sqlite3 not found
microsoft·sqlite·.net
数据的世界011 天前
技术变革:为何C#与.NET是未来的开发方向
java·c#·.net