目前我们的应用程序中的对象有一个非常庞大的审计系统,流程是这样的。
-Class实现一个接口
-Interfaces强制类覆盖一些方法,用于将需要审计的属性添加到KeyValuePairs列表中
然后,现在开发人员需要将所有这些添加到那个类中,我们的对象也经常更改,所以我们不只是序列化类。
我想要做的是使用属性将属性标记为可审计,然后自动执行所有操作,以便开发人员不需要做任何事情。
我的主要问题是 - 我知道人们总是说反思很慢,我们说话的速度有多慢?通过查看课程并查看属性的属性然后执行任何所需的逻辑,我将获得什么样的性能?
感谢您的帮助
步骤,
答案 0 :(得分:1)
很难给出具体答案,因为它取决于您的应用程序的适当性能。
反射比正常的编译代码慢,但是当担心性能问题时,总是更好地拥有可行的东西,然后使用分析来找到真正的性能瓶颈并进行优化。
过早优化可能导致代码难以维护,因此开发人员的工作效率会降低。
我首先使用反射并编写一组良好的单元测试,以便您知道代码是否正常工作。如果性能证明是一个问题,您可以使用Visual Studio分析器来分析您的单元测试并发现瓶颈。
有些库可以加速反射,或者你可以使用表达式树来替换你的反射代码,如果它要慢。
答案 1 :(得分:0)
如果performance
确定与否取决于您的应用上下文。因此很难说对你来说是慢还是快,你应该自己尝试一下。
最有可能的是,imo,它会提供相当可接受的性能,但我再也不知道你将在哪里使用它。
像我想到的其他解决方案一样,可能是:
key/value
数据的位置但我会尝试的第一件事就是反思,就像你想的那样。
答案 2 :(得分:0)
阅读Marc的回复this我会建议反思应该适合大多数应用需求。
在进行任何根本性更改之前,我建议运行一个分析器来查找代码中的瓶颈。如果您确定反射/审核过程是主要的痛点,请使用IL Emit并重试。