Big-O of .GetProperties()

本文关键字:GetProperties of Big-O | 更新日期: 2023-09-27 18:29:07

如果有n个属性,那么.GetProperties的Big-O是O(n)吗?或者反射中是否涉及增加复杂性的过程?

假设有一个定义的类:

public class Reflector
{
 public string name { get; set; }
 public int number { get; set; }
 public bool flag { get; set; }
 public List<string> etc { get; set; }
}

然后打了这个电话:

var reflect = new Reflector();
PropertyInfo[] properties = reflect.GetType().GetProperties();

.GetProperties()的时间复杂度,即Big-O是多少?考虑到有4个属性,这只需要4次迭代,还是比这更复杂?或者,是O(1)具有某种标准的复杂性才能到达列表——似乎它仍然必须是O(n)才能构建属性数组?

Big-O of .GetProperties()

Big-O是关于渐近复杂度的,换句话说,O(n)只与n的大值相关
一个类永远不会有足够的属性使其相关。

出于实际目的,您不妨考虑它为O(1),但有一个非常大的常数。

这种问题是用纳秒来表示的,而不是用大O符号来表示的。

比这更复杂。该算法还必须包括基类型链。此外,实现可能会缓存结果,因此弹药化成本实际上可能是O(1)。

但在实践中,反思总是很慢,所以您可能应该对应用程序进行概要分析并进行更改,直到达到性能目标。