我发现每当我禁用nhibernate反射优化器时,初始化我的会话工厂都会非常快.这非常适合测试目的.
<add key="hibernate.use_reflection_optimizer" value="false" />
Run Code Online (Sandbox Code Playgroud)
我的问题是这样做的连锁效应是什么,为什么它不是默认设置?一切似乎都在起作用.
fos*_*ndy 11
如果您想要的不仅仅是手册中反映优化器的单段提及的副本,那么这里有一个很好的讨论反射优化器的性能改进,以及对方法的简要讨论.
从我有限的理解(这来自阅读,我没有实验,所以欢迎更正),缺点是实际上有两个反射优化器:
codedom,基本上生成然后编译代码(即nhibernate为您的实体生成包装器Getter/Setter代码然后编译它).从它的外观来看,它只适用于公共成员,并且可能使用起来非常昂贵,因为它天真地生成包装类(无论特定字段是否公开),尝试编译它并在失败时抛出异常.
轻量级代码生成,它使用reflect.emit的神秘实践来获取/设置值.这对我来说仍然是一个非常新的领域,但是对此进行的个人实验表明,您可以使用SRE非常快速地操纵私有变量,并且源至少似乎为基本字段/属性提供了无论访问修饰符的排放.这是默认值.
至于连锁效应 - 好吧,从1中的闪亮图表看,如果你在开发过程中坚持/保湿很多重物,它可能是相当可观的.如果不是(并且我猜测你不是在测试/开发过程中)那么关闭它似乎是明智的.
归档时间: |
|
查看次数: |
4803 次 |
最近记录: |