15

我有这个代码:

var context = new PrincipalContext( ContextType.Machine );
var user = UserPrincipal.FindByIdentity( context, username );

运行大约需要 2-3 秒。建议我使用PrincipalSearcher类重写它:

var context = new PrincipalContext( ContextType.Machine );
var user = new UserPrincipal(context);
user.SamAccountName = username;
var searcher = new PrincipalSearcher(user);
user = searcher.FindOne() as UserPrincipal;

它在不到一秒的时间内运行 - 明显更快。建议重写的人和我一样一无所知,为什么它运行得更快。

为什么它会产生任何性能差异?

4

1 回答 1

5

我能想到的唯一合理的原因是.FindByIdentity必须检查多个属性是否匹配,因为您没有具体指定要查找的属性。

您可以通过指定您正在寻找的属性(使用此方法重载)来做到这一点 - 试试这个进行比较:

var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);

这有多快?

于 2012-08-03T16:23:13.807 回答