有没有办法在测试运行之间将 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
- 或者:
- 使用
store
和 retrieve
. 将您的数据结构写入磁盘(或 /tmp
)
- 使用
freeze
和 thaw
将数据作为标量传递。
当我通过证明 运行 我的测试用例时,在第一次测试 运行 之前加载我的测试数据大约需要 20 - 25 秒。有没有一种方法可以让一个单独的、持久的进程将测试数据加载到内存中,并证明每次我 运行 我的测试时都会立即检索一个副本?
我知道我可以有一个单独的进程 return JSON/XML,但是它必须被解析。我想知道我是否可以有另一个 return 引用数据结构的进程。
如果您谈论的是单独的程序调用 - 不,没有办法做到这一点。内存在进程内拥有,并在进程结束后销毁。
做你想做的事情的唯一方法是:
- parent 处理 'load' 数据。
fork
child 过程
这意味着 'loaded' 数据将保留在内存中 - fork
对每个 children 使用 copy-on-write(所以如果它没有改变,你根本不会使用更多的内存)。
但是每个 child 都可以访问相同的 'memory space'。
或者,您可以使用 Storable
- 或者:
- 使用
store
和retrieve
. 将您的数据结构写入磁盘(或 - 使用
freeze
和thaw
将数据作为标量传递。
/tmp
)