.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总是很慢,因此您应该对应用程序进行概要分析并进行更改,直到达到性能目标为止。
上述就是C#学习教程:.GetProperties()的大O分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1034940.html