【发布时间】:2010-11-14 18:13:08
【问题描述】:
我有一个缓存的想法,我正在开始实施:
Memoizing functions 并将返回值与函数签名的哈希一起存储在Velocity 中。使用PostSharp,我想检查缓存并返回返回值的再水化表示,而不是再次调用该函数。我想使用属性来控制这种行为。
不幸的是,如果我的组织中的其他开发人员爱上了性能提升并开始使用缓存属性装饰每一个可见的方法,包括一些具有副作用的方法,这对我组织中的其他开发人员来说可能是危险的。当记忆库怀疑某个函数可能会导致副作用时,我想退出编译器警告。
我如何判断代码使用 CodeDom 或 Reflection 可能会导致副作用?
【问题讨论】:
-
@Chris:除非分析表明存在可以修复的瓶颈,否则没有人应该考虑使用您的优化。简而言之,思考你的函数的正确方法是,“嘿,东西很慢。我敢打赌记忆化会有所帮助。等等,克里斯为此写了一些代码!”而不是“嘿,克里斯写了一些代码来让事情变得更快。让我们使用它!”
标签: c# memoization side-effects