我有一些代码,我正在revewing,它用于一些文字转换为MD5 Hash
。很棒。它被用来创建一个的gravatar头像的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哈希值,以便我们可以生成他们的gravatar url。所以这个视图可能会调用这个方法几十次。
,但不尝试浪费太多时间在强调premature optimzation,等等...这将是更好?
因此,你建议他应用“使用”声明,对吧? – Overhed 2009-05-20 15:06:16