Skip to content

Улучшения для MD5 hash #74

@Kataane

Description

@Kataane

Добрый день.
Спасибо большое за подобную библиотеку и Ваш труд. Хотелось бы внести немного помощи.

В Md5HashFunction.cs, HashFunctionBase.cs и в ByteUtility.cs
используется устаревшая логика для создания MD5 hash на основе строки.

Примерно с .NET 5 появились MD5.HashData и Convert.ToHexString

Что позволяет делать примерно так:

public override string Invoke(RenderSettings settings, string argument1) {
  var buffer = Encoding.UTF8.GetBytes(argument1);
  
  Span<byte> hash = stackalloc byte[MD5.HashSizeInBytes];
  MD5.HashData(buffer, hash);
  
  return Convert.ToHexString(hash);
}

На сколько это лучше?

Method Size Mean Error StdDev Rank Gen0 Allocated
Md5WithStackallockAndStatic 10000 392.1 ns 7.55 ns 7.76 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 10 394.0 ns 4.49 ns 3.98 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 50 394.9 ns 5.04 ns 4.21 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 100 395.3 ns 3.47 ns 3.25 ns 1 0.0210 88 B
Md5WithStackallockAndStatic 1000 398.1 ns 6.02 ns 5.03 ns 1 0.0210 88 B
Md5WithUsing 10000 1,140.0 ns 10.83 ns 9.60 ns 2 0.2499 1048 B
Md5WithUsing 50 1,150.3 ns 8.98 ns 7.01 ns 2 0.2499 1048 B
Md5WithUsing 1000 1,152.3 ns 14.84 ns 13.16 ns 2 0.2499 1048 B
Md5WithUsing 100 1,156.4 ns 22.71 ns 24.30 ns 2 0.2499 1048 B
Md5WithUsing 10 1,156.8 ns 8.38 ns 7.84 ns 2 0.2499 1048 B

Если нужна подробная информация, тесты и бенчмарки:
https://github.com/Kataane/MD5Hash

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions