1

关于:.GetProperties() 的 Big-O

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

编辑

测试:

在简单的开发计算机上(没什么花哨的),item 有 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;
                }
    
  • 4

    1 回答 1

    3

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

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

    于 2012-03-26T20:19:40.220 回答