我有下面的代碼,其對任何類型的對象的一個空值或空白檢查:C# - 最快的方法來做這種類型的空檢查?
public static void IfNullOrEmpty(Expression<Func<string>> parameter)
{
Throw.IfNull(parameter);
if (parameter.GetValue().ToString().Length == 0)
{
throw new ArgumentException("Cannot be empty", parameter.GetName());
}
}
它調用下面的GetValue擴展方法:
public static T GetValue<T>(this Expression<Func<T>> parameter)
{
MemberExpression member;
Expression expression;
member = (MemberExpression)parameter.Body;
expression = member.Expression;
return (T)parameter.Compile()();
}
我傳遞在含有表達字符串在這個方法中進行測試。這種方法在我的機器上平均需要2 ms(即使在我測試的另一臺機器上速度更慢),如果在整個應用程序中多次調用該方法,該方法會相加。看起來這種方法太慢了。什麼是做這種空檢查的最快方法?
你可能會計時JIT。對於新手來說,他們應該有一個很大的警告,不要試圖去計時,他們總是會犯錯。 – Blindy
當我整個分析應用程序時,我看到類似的結果,就好像我只是單獨計時代碼一樣。 – Andrew
爲什麼你使用表達呢?爲什麼不只是'功能'? –
Enigmativity