.GetProperties()的大O

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

假设有这个定义的类:

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

然后调用此调用:

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

.GetProperties()的时间复杂度,即Big-O是.GetProperties() ? 考虑到有4个属性,这只需要4次迭代还是比它更复杂? 或者,是否O(1)具有一些标准的复杂性来到列表 – 这似乎仍然是O(n)只是为了构建属性数组?

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

出于实际目的,您不妨将其视为O(1),但具有非常大的常数。

这种问题以纳秒表示,而不是Big-O表示法。

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

但实际上,reflection总是很慢,因此您应该对应用程序进行概要分析并进行更改,直到达到性能目标为止。