NHibernate 反射优化器 - 它有什么作用?

2024-04-28

我发现每当我禁用 nhibernate 反射优化器时,初始化会话工厂的速度就会大大加快。这对于测试目的非常有用。

<add key="hibernate.use_reflection_optimizer" value="false" />

我的问题是这样做会产生什么连锁反应,为什么它不是默认设置?一切seems一样地工作。


如果您想要的不仅仅是复制粘贴手册中提到的反射优化器的单段内容,还有一个很好的讨论here http://jaychapman.blogspot.com/2007/11/nhibernate-access-performance.html反射优化器的性能改进,以及对方法的简要讨论。

根据我有限的理解(这全部来自阅读,我没有进行任何实验,因此欢迎指正),缺点是实际上有两个反射优化器:

  1. codedom https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Bytecode/CodeDom/BytecodeProviderImpl.cs,它基本上是生成然后编译的代码(即 nhibernate 为您的实体生成包装器 Getter/Setter 代码,然后编译它)。从表面上看,这只适用于公共成员,并且可能是extra使用起来很昂贵,因为它天真地生成包装类(无论特定字段是否是公共的),尝试编译它并在失败时抛出异常。

  2. 轻量级代码生成 https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Bytecode/Lightweight/,它使用 Reflection.emit 的神秘实践来获取/设置值。这对我来说仍然是一个非常新的领域,但个人实验this http://www.codeproject.com/KB/cs/Dynamic_Code_Generation.aspx表明您可以使用 SRE 非常快速地操作私有变量,并且source https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Properties/至少似乎为基本字段/属性提供发射,无论访问修饰符如何。这是默认设置。

至于连锁反应 - 嗯,从闪亮的图表来看1 http://jaychapman.blogspot.com/2007/11/nhibernate-access-performance.html看起来如果你在开发过程中坚持/水合大量重物,它可能会相当大。如果没有(我猜测您不在测试/开发期间),那么关闭它似乎是相当明智的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 反射优化器 - 它有什么作用? 的相关文章

  • 如何确保使用 Microsoft Sync Framework 同步成功?

    我正在使用微软同步框架 https msdn microsoft com en us sync bb736753 aspx同步两个 Microsoft SQL Server 上的表 我创建了一个测试应用程序 它每秒在远程服务器上的表中生成一
  • 如何保持长时间运行的NHibernate Session数据一致?

    我在 ASP NET 会话中缓存了 NHibernate 会话 我遇到过一种情况 用户编辑了一个对象 因此它位于 ISession 的第一级缓存中 然后另一个用户编辑了同一个对象 此时 用户 1 仍然可以看到其编辑的原始版本 而用户 2 可
  • 在 C++/CLI 中创建时初始化静态字典

    今天我看到创建静态字典并初始化它的 C 代码 public static readonly Dictionary
  • 使用 SSL 设置 .Net IBM.XMS 客户端

    我必须创建一个客户端来侦听队列上的消息 正在使用 SSL 我正在 dot net 中进行开发 我浏览了数百页的文档和论坛 找到了一些清晰简洁的内容 但看起来事实并非如此 我有一个 jks 并且我能够 telnet 到正在发布队列的服务器 下
  • PowerShell 和 StringBuilder

    我是 PowerShell 新手 但熟悉 NET 类 我在用System Text StringBuilder在 PowerShell 脚本中 脚本是这样的 Function MyStringFunc String line r New O
  • 如何在托管应用程序的框架代码中调试 System.ExecutionEngineException

    我有一个作为服务运行的应用程序 该应用程序有时会崩溃 该应用程序是用 vb net 编写的 并在新线程 一次一个 上运行其任务 我已经收集了故障转储并开始分析 从应用程序创建的日志文件的分析 转储分析支持它 看来 当没有任务正在运行并且应用
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • Linq 在 .Substring() 上抛出异常

    我遇到了一种情况 我需要让 LINQ to Entities 查询根据字符串的长度返回一个子字符串 这是查询 var query from f in Context Files orderby f DateAdded descending
  • wcf json网络服务

    创建 JSON Web 服务的最佳方法是什么 我们还有另一个使用 Java 的团队 他们坚持使用 JSON 完成所有通信 我更喜欢使用 WCF 而不是任何第三方框架 我找到了这个博客 http www west wind com weblo
  • 多个 Visual Studio 项目抱怨临时文件丢失,因此无法打开。错误代码 &H80070003

    我在终端服务器上运行 Visual Studio 2010 并且已经运行了一段时间 问题相对较少 今天早上 我启动了我的电脑 在英国的长周末期间 似乎出现了以下问题 我有很多项目 但不是我的所有项目 也不是给定解决方案中的所有项目 抱怨无法
  • 自定义 WCF DataContractSerializer

    是否可以用我自己的序列化程序替换 Windows Communication Foundation 中的 dataContractSerializer 如果可能的话 我怎样才能实现这一目标 是的 您可以提供自己的序列化器实现 默认情况下 W
  • 修饰符 async 对此项目无效

    这似乎并不是数百个具有相同错误的其他问题的重复 我把它们都看过了 发现它们是无关的 我正在制作一个小笔记应用程序 并尝试从目录中读取文件 按照 MSDN 示例 我有以下代码 但它给了我一个错误 错误 1 修饰符 async 对此无效 项目
  • 有没有类似 ActiveRecord::Migration for .NET 的东西?

    我玩过 ruby on Rails ActiveRecord Migration类 我喜欢保持数据库模式版本化是多么容易 我想在我的 ASP NET 项目中做类似的事情 我想知道是否有人听说过一个可以执行以下操作的工具ActiveRecor
  • 使用 AesManaged“填充无效且无法删除”

    我正在尝试使用 AesManaged 进行简单的加密 解密 但在尝试关闭解密流时不断出现异常 这里的字符串被正确加密和解 密 然后在 Console WriteLine 打印正确的字符串后 我收到 CryptographicExceptio
  • 如何隐藏 Windows 窗体中控件的大小调整手柄?

    我有一个 UserControl 想在设计时隐藏调整大小手柄 就像 TextBoxControl 一样 它只有两个手柄 左手柄和右手柄 文本框的高度是固定的 除非你说它是多行的 在这种情况下 文本框会显示所有九个大小调整手柄 您需要实现一个
  • 使用32位应用程序获取syswow64目录

    我正在尝试在系统目录中查找文件 问题是当使用 Environment SystemDirectory 在 x64 计算机上 我仍然获得 System32 目录 而不是 Systemwow64 目录 我需要在 x86 机器上获取 System
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712

随机推荐

  • R 分号将列分隔为行

    我正在使用 RStudio 2 15 0 并使用 XLConnect 从 Excel 创建了一个包含 3000 多行和 12 列的对象 我试图将一列分隔 拆分为行 但不知道这是否可能或如何执行 下面的数据示例使用 3 列连接 对此的任何帮助
  • X509 C# 指南/教程

    谁能给我提供有关 X509 证书的良好介绍材料以及 C 示例 你可以从这里开始 X509证书 MSDN 资源 http msdn microsoft com en us library system security cryptograph
  • 获取登录用户的id

    如何获取登录用户的UserId 我正在使用标准系统生成的 AccountModel 我可以使用以下方式获取用户名 User Identity Name 但我没有看到 UserId 字段 我想使用 UserId 作为另一个表的外键 尝试这个
  • 如何使用 SQLAlchemy 进行“mysql 解释”

    我有一个像这样的sql DBSession query Model filter 我想用这个 sql 来解释SQLAlchemy 你想要将 SQLAlchemy 查询编译为字符串 https docs sqlalchemy org faq
  • 反应本机矢量图标显示为问号[重复]

    这个问题在这里已经有答案了 我已经安装了react native v0 46并安装了NativeBase 但在组件中使用标签后 没有显示图标而是显示问号 Android且未在iOS中测试 为了解决这个问题 我做了很多修改 如下所示 rnpm
  • 在 lxml 中定义默认命名空间(无前缀)

    当使用 lxml 渲染 XHTML 时 一切都很好 除非您碰巧使用 Firefox 它似乎无法处理以名称空间为前缀的 XHTML 元素和 javascript 虽然 Opera 能够很好地执行 javascript 这适用于 jQuery
  • jQuery 创建并追加多个元素

    我创建了 2 个 div Div1 冻结 Div2 父级 然后又创建了 3 个 div 加载 标题 消息 将其附加到 Div2 父级 整个 div 进入 body 标签 下面是我的代码 我认为还有其他一些最好的方法来实现这一点 var fr
  • 覆盖 JSF Primefaces 消息标签

    我可以覆盖默认实现吗
  • scanf 被跳过[重复]

    这个问题在这里已经有答案了 我正在尝试为一个类制作一个简单的 C 程序 其中一个要求是我需要使用scanf printf对于所有输入和输出 我的问题是为什么我的scanf在 main 中的 for 循环被跳过并且程序刚刚终止之后 这是我的代
  • 在 Java 中启用 Kerberos 的详细日志记录

    我有一个基于 Java 的 Web 应用程序 它获取包含用户名和密码的 Web 表单的内容 并使用 Kerberos 对基于 Windows 的域进行身份验证 KDC 地址显然被配置为在每次查找时映射到不同的 IP 地址 这可以通过使用命令
  • PyQT4 signal.connect 是否使对象保持活动状态?

    如果我有一个信号并且向该信号注册了一个对象函数 这会使该对象保持活动状态并停止该对象的垃圾收集吗 E g class Signals signal Qt pyqtSignal def init self QObject init self
  • Scipy ODE 时间步长向后移动

    我在 Stackoverflow 上四处查看 但找不到任何可以回答我的问题的内容 问题设置 我正在尝试使用以下方法求解刚性 ODE 系统scipy integrate ode 我已将代码简化为最小的工作示例 import scipy as
  • Flutter TextField 在选择时更改图标颜色

    目标 改变颜色prefixIcon旁边的TextField当点击TextField TextField decoration InputDecoration prefixIcon Icon Icons lock outline hintTe
  • VBA 中的查找和查找下一个

    我正在研究 Excel 宏 当我从另一个 Excel 工作表获取数据时 我需要什么 代码应该首先检查是否有任何其他行具有相同的 FundName 如果找到 则条件适用 我只是给出要检查 FundId 的 Excel 工作表示例 S No F
  • 在 Tensorflow 中混合前馈层和循环层?

    有人能够在 Tensorflow 中混合前馈层和循环层吗 例如 输入 gt 转换 gt GRU gt 线性 gt 输出 我可以想象一个人可以用前馈层定义自己的单元 并且没有状态 然后可以使用 MultiRNNCell 函数进行堆叠 如下所示
  • 用于显示 IntelliSense 的 Visual Studio 键盘快捷键

    What s the keyboard shortcut for Visual Studio to display the IntelliSense box if one accidentally hits ESC and wants th
  • 使用 querySelector() 获取最后一个 td 元素

    我有一个变量 它是 dom 中的一个节点 我已经设法一路接近我想要的地方 myvar querySelector tblItinPriceSummary tr 给了我这个 tr td Subtotal td td align right 1
  • preg_replace 和中文字符的奇怪问题

    我有这个奇怪的问题 经过 preg replace 后 一些汉字变成了时髦的字符 这是脚本 message strip tags mysql real escape string POST message img
  • Matplotlib和Pandas结合时对fig、ax、plt的理解

    我试图更好地理解在结合 Matplotlib 和 Pandas 进行绘图时 图形 轴和 plt 是如何组合在一起的 所接受的在这里回答 https stackoverflow com questions 29568110 how to us
  • NHibernate 反射优化器 - 它有什么作用?

    我发现每当我禁用 nhibernate 反射优化器时 初始化会话工厂的速度就会大大加快 这对于测试目的非常有用