gpt4 book ai didi

sql-server - 测试自定义 ORM 解决方案性能开销 - 如何?

转载 作者:行者123 更新时间:2023-11-28 19:46:44 24 4
gpt4 key购买 nike

我使用面向方面的编程 (PostSHarp) 创建了自定义 ORM 工具的原型(prototype),并实现了持久性无知(在编译时之前)。现在我试图找出与使用纯 DataReader 和 ADO.NET 相比它引入了多少开销。我做了一个测试用例——在 MS SQL Server 2008 和 MySQL Community Edition 中插入、读取、删除数据(大约 1000 条记录)。我使用纯 ADO.NET 和我的自定义工具多次运行此测试。

我预计结果将取决于许多因素 - 内存、交换、CPU 和其他进程,因此我运行了多次测试 (20-40)。但是结果真的出乎意料。这些案例之间的差异太大了。如果只有一些极值,我可以忽略它们(可能会发生交换或类似的情况)但它们是如此不同以至于我确信我不能相信这种测试。将近一半的时间我的 ORM 表现出比纯 ADO.NET 高 10% 的性能,其他时候是 -10%。

有什么方法可以使这些测试可靠吗?我没有一台功能强大且内存很多的计算机,但也许我可以通过某种方式使 MS SQL 和 MySQL 或 ADO.NET 在这些测试期间尽可能一致?记录数如何 - 哪个更可靠,使用少量记录并运行更多次或其他方式?

最佳答案

你见过ORMBattle.NET吗? ?参见 FAQ there ,有一些与测量特定 ORM 工具引入的性能开销相关的想法。测试套件是 open source .

关于你的结果:

  • 一些 ORM 工具会自动批处理语句序列(即一起发送多个 SQL 语句)。如果这个特性在 ORM 中实现得很好,如果 ADO.NET 测试不涉及批处理,那么在 CRUD 操作上很容易击败普通 ADO.NET 2-4 倍。 ORMBattle.NET 上的测试测试了这两种情况。
  • 很大程度上取决于您如何在那里建立交易边界。请引用ORMBattle.NET FAQ了解详情。
  • CRUD 测试根本不是最佳性能指标。一般来说,很容易得到在这里达到可能的性能峰值,因为一般来说,在这种情况下,RDBMS 必须比 ORM 做更多的事情。

附言我是 ORMBattle.NET 的作者之一,所以如果您对详细信息/可能的贡献感兴趣,可以直接与我联系(或加入 ORMBattle.NET Google Groups)。

关于sql-server - 测试自定义 ORM 解决方案性能开销 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com