我的单元测试需要运行很多BOOST_CHECK_CLOSE调用,这需要很长时间(据我所知,在一个线程上)。我希望能够沿着这些方向做点什么:
#pragma omp parallel for num_threads(8)
for (int i=0; i<ARRAY_SIZE; i++) {
BOOST_CHECK_CLOSE(array1[i], array2[i], tolerance);
}
然而,当我尝试这个时,一些非常讨厌的内存腐败似乎发生了。最常见的是段落错误,但有时却反而是这样:
*** stack smashing detected ***
有没有人有一些实现我想达到的预期结果的好方法的经验?我相信每个人都会欣赏他们的测试快速运行!
答案 0 :(得分:2)
答案 1 :(得分:0)
解决方法:用一些本地逻辑替换你的boost调用,收集所有失败并在最后报告。
因为你担心性能,所以在这样一个紧凑的循环中调用BOOST_CHECK机器可能是一个次优的想法。