【问题标题】:How many nanoseconds does a call to GetProperties() take?调用 GetProperties() 需要多少纳秒?
【发布时间】:2012-03-26 20:03:51
【问题描述】:

关于:Big-O of .GetProperties()

.GetProperties() 方法在 C# 中需要多少纳秒?

编辑

测试:

在简单的开发计算机上(没什么花哨的),项目有 8 个属性,并且没有继承:

        stopwatch.Start();
        for (int i = 0; i < 10000; i++)
        {
            PropertyInfo[] properties = item.GetType().GetProperties();
        }
        stopwatch.Stop();

结果:

  • 以纳秒为单位的总时间:16,569.8
  • 以毫秒为单位的总时间:16.5698
  • 每次 .GetProperties() 调用的平均时间:1.65 ns(这是一个假设,不确定结果是否被缓存)

    此外

    当使用额外的嵌套 foreach 循环第二次运行时,总共只用了 6 毫秒。这是添加的代码(在 for 循环内):

                foreach (var prop in properties)
                {
                    var x = prop;
                }
    
  • 【问题讨论】:

    • 所需的参数会因任何数量的参数而异。不可能绝对确定地说明它或任何一段代码的执行时间。
    • @JaredPar - 我在查找这些参数或任何基准时遇到了麻烦。你知道我可以去哪里看吗?
    • 请注意,Reflection 标签拼写错误。为什么我无法重新标记此帖子,但我可以与其他人一起这样做?
    • @MattBurland - 请参阅编辑以对一些平庸的硬件进行测试。

    标签: c# reflection getproperties


    【解决方案1】:

    鉴于您的完整应用程序代码、硬件的完整描述、注册表或系统配置、操作系统版本以及所有正在运行的软件及其活动的列表,您应该可以做出合理的猜测。

    我想说的是,这取决于。几乎所有东西。找出答案的唯一方法是计时,最好使用Stopwatch 并经过多次迭代。确切的结果会不时变化,并且主要取决于您正在检查的类、可用的 CPU 能力以及运气(也称为处理器调度)。

    【讨论】:

    • 查看秒表结果的编辑。当测试超过 10,000 次循环时,我几乎没有时间眨眼。
    猜你喜欢
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多