首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.GetProperties()的Big-O

.GetProperties()的Big-O
EN

Stack Overflow用户
提问于 2012-03-27 03:51:37
回答 2查看 380关注 0票数 5

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

假设有这样一个定义的类:

代码语言:javascript
运行
复制
public class Reflector
{
 public string name { get; set; }
 public int number { get; set; }
 public bool flag { get; set; }
 public List<string> etc { get; set; }
}

然后进行这个调用:

代码语言:javascript
运行
复制
var reflect = new Reflector();
PropertyInfo[] properties = reflect.GetType().GetProperties();

.GetProperties()的时间复杂度是多少?考虑到有4个属性,这只需要4次迭代,还是更复杂?或者,它是O(1)和一些标准的复杂性集,以获得列表-这似乎仍然是O(n),仅仅是为了构建属性数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-27 03:55:17

Big-O是关于渐近复杂性的,换句话说,O(n)只与较大的n值相关。

一个类永远不会有足够的属性来使其相关。

出于实际目的,您也可以考虑它为O(1),但需要一个非常大的常量。

这类问题是以纳秒表示的,而不是大O符号。

票数 3
EN

Stack Overflow用户

发布于 2012-03-27 03:54:13

比这复杂得多。此外,实现可能会缓存结果,因此摊销成本实际上可能是O(1)。

但在实践中,反射总是相当慢的,所以您可能应该分析您的应用程序并进行更改,直到您达到性能目标。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9878743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档