当我通过 prove 运行我的测试用例时,在第一次测试运行之前加载我的测试数据大约需要 20 - 25 秒。有没有一种方法可以让一个单独的持久进程将测试数据加载到内存中,并证明每次运行测试时都能立即检索一个副本?
我知道我可以让一个单独的进程返回 JSON/XML,但随后必须对其进行解析。我想知道是否可以有另一个进程返回对数据结构的引用。
最佳答案
如果您谈论的是单独的程序调用 - 不,没有办法做到这一点。内存在进程内拥有,并在进程结束后销毁。
做你想做的事情的唯一方法是:
- 让父进程“加载”数据。
fork
子进程
这意味着“加载”的数据将保留在内存中 - fork
对每个子项使用写时复制(因此,如果它不改变,您将不会使用更多完全没有内存)。
但是每个 child 都可以访问相同的“内存空间”。
或者,您可以使用 Storable
- 或者:
- 使用
store
和retrieve
将您的数据结构写入磁盘(或/tmp
)。 - 使用
freeze
和thaw
将数据作为标量传递。
关于perl - 有没有办法在测试运行之间将 perl 测试数据保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150028/