有没有办法在测试运行之间将 perl 测试数据保存在内存中?

Is there a way to keep perl test data in memory between test runs?

当我通过证明 运行 我的测试用例时,在第一次测试 运行 之前加载我的测试数据大约需要 20 - 25 秒。有没有一种方法可以让一个单独的、持久的进程将测试数据加载到内存中,并证明每次我 运行 我的测试时都会立即检索一个副本?

我知道我可以有一个单独的进程 return JSON/XML,但是它必须被解析。我想知道我是否可以有另一个 return 引用数据结构的进程。

如果您谈论的是单独的程序调用 - 不,没有办法做到这一点。内存在进程内拥有,并在进程结束后销毁。

做你想做的事情的唯一方法是:

  • parent 处理 'load' 数据。
  • fork child 过程

这意味着 'loaded' 数据将保留在内存中 - fork 对每个 children 使用 copy-on-write(所以如果它没有改变,你根本不会使用更多的内存)。 但是每个 child 都可以访问相同的 'memory space'。

或者,您可以使用 Storable - 或者:

  • 使用 storeretrieve.
  • 将您的数据结构写入磁盘(或 /tmp
  • 使用 freezethaw 将数据作为标量传递。