代码之家  ›  专栏  ›  技术社区  ›  Adam Driscoll

LookupAccountSid每次通话时间+600毫秒

  •  2
  • Adam Driscoll  · 技术社区  · 14 年前

    GetTokenInformation TokenGroups 用于检索特定令牌所属的所有组的标志。然后我循环遍历每个返回的SID并使用 LookupAccountSid 查找帐户SID 两次:第一次抓取名称和域字符数组的大小,第二次填充分配的 StringBuilder s。

    我被耽搁了很长时间。我运行ANTS来查看问题所在,发现如果一个用户是23个组的一部分,那么整个序列需要15秒!探查器指向LookupAccountSid的第一个调用,并指出平均每个调用652ms。

                LookupAccountSid(null, tokenGroups.Groups[i].SID, null, ref accountCount, null,
                                 ref domainCount, out snu);
    

    accountCount domainCount

    1 回复  |  直到 14 年前
        1
  •  3
  •   leppie    14 年前

    运行探查器时,不可能精确测量所用的时间。

    它只有在与所有其他方法进行比较时才有用。

    在不调试信息/附加调试器的情况下,使用秒表作为计时器运行调用,并启用优化。

    编辑:

    我的代码在附加探查器(10秒)和NGEN'd app(0.1秒)时运行的时间大约是后者的100倍。