У меня есть код, который я открываю, который используется для преобразования текста в MD5 Hash
. Работает отлично. Используется для создания MD5Hhash
для граватационного аватара . Вот оно: -
static MD5CryptoServiceProvider md5CryptoServiceProvider = null;
public static string ToMD5Hash(this string value)
{
//creating only when needed
if (md5CryptoServiceProvider == null)
{
md5CryptoServiceProvider = new MD5CryptoServiceProvider();
}
byte[] newdata = Encoding.Default.GetBytes(value);
byte[] encrypted = md5CryptoServiceProvider.ComputeHash(newdata);
return BitConverter.ToString(encrypted).Replace("-", "").ToLower();
}
Обратите внимание, как мы создаем MD5CryptoServiceProvider
при первом вызове этого метода? (давайте не будем беспокоиться об условиях гонки здесь, для простоты).
Мне было интересно, будет ли вычислительно дороже, если я изменю строки, которые используются для создания провайдера, на это ...
using(var md5CryptoServiceProvider = new MD5CryptoServiceProvider())
{
... snip snip snip ....
}
Теперь, как этот метод используется / потребляется? Итак, представьте, что это домашняя страница StackOverflow -> для каждого сообщения, сгенерируйте хеш md5 пользователя, чтобы мы могли сгенерировать его граватар-URL Таким образом, представление может вызывать этот метод несколько десятков раз.
Не пытаясь тратить слишком много времени на стресс преждевременную оптимизацию и т. Д ... что будет лучше?