gpt4 book ai didi

ruby-on-rails - 针对大型数据集的测试算法

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:02 25 4
gpt4 key购买 nike

我正在实现一种统计算法,该算法需要访问大型样本数据集才能进行正确测试。 MySQL 的单个表中有 50,000 行。

我想使用传统的 RSpec 方法进行测试,但是创建样本集并将其加载到数据库中会导致两个问题。

  • 使用 Active Record 创建极其缓慢/密集。我还没有探索创建跳过验证的各种选项,因为模型非常基本,我认为它不会产生巨大的速度差异
  • 使用 hacky mysqlimport 进行不正确的清理(意味着测试后数据留在数据库中,尽管在 :after block 中显式调用了 DatabaseCleaner)

在内存中创建对象图是可能的,但作为模拟主义者,我有点害怕覆盖 AR 功能。

有什么想法和最佳做法吗?

谢谢!贾斯汀

最佳答案

这只是部分答案,但是:

  • Extremely slow/intensive using Active Record create. (...) I assume it won't make a huge speed difference

实际上是一个很大的速度差异。 PostgreSQL 对此有很好的指导:

http://www.postgresql.org/docs/9.0/interactive/populate.html

大部分直接应用于MySQL:

  • 使用单个事务,而不是多个事务。
  • 加载文件中的数据:http://dev.mysql.com/doc/refman/5.5/en/load-data.html
  • 删除索引并在插入后重新创建它们。
  • 加载数据时禁用 fkey 约束(当然,假设您的数据是干净的)。
  • 为 MySQL 提供充足的资源。
  • 如果适用,禁用复制。
  • Improper cleanup using a hacky mysqlimport (meaning data left in the database after test, despite an explicit call to DatabaseCleaner in an :after block)

如果你想清除所有数据的表,尝试截断:

http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html

关于ruby-on-rails - 针对大型数据集的测试算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980678/

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