如何比较cpp和python输出?

时间:2019-01-28 18:19:10

标签: python c++ performance function benchmarking

我正在尝试从C ++中的Python复制一些功能。它是一个涉及数字方法,带有许多子函数。

是否有比较好的方法将Python函数的值与我正在编写的C ++函数进行比较?

有人可以粘贴一些代码或提供迷你教程吗? 还是一些指针或引用?

非常感谢! Artabalt

1 个答案:

答案 0 :(得分:0)

测试。

针对Python的功能编写测试(除非它们已经存在;通常会测试Python代码)。

将测试移植到C ++。然后使您的C ++函数通过测试。理想情况下,将测试作为makefile的目标,并在可能的情况下运行它们。


编辑:

可以进行随机测试,如果您认为这是个好主意,则可能取决于您的具体情况。 经验法则是在每种情况下都使用几个案例(您可以使用代码覆盖率来查看是否缺少案例)。

作为示例,在我的工作中,我使用了集成测试,该集成测试需要很多组件。在给定的时间点,我们使用硬编码的服务器响应来模拟投注过程(除用户界面之外的所有过程),并在硬件打印机中重定向到bmp。

现在,您无法测试所有内容。我无法按每种可能的顺序测试数字的每个有效组合(从0到36的6个数字)。我也不能测试所有无效的组合(无限吗?)。您测试了一对。有意义的。

所以我们总是给它相同的数字。测试是它必须产生始终相同的bmp(必须呈现相同的字体,必须具有相同的文本,相同的下注日期等)。

现在,取决于您的代码和应用程​​序,生成此测试所具有的自动化水平。

我不知道您的特殊情况,但是我将开始创建一个使用您的库的小程序(越简单越好)。 Python中的一种实现,C ++中的一种实现。例如,如果您正在测试字符串库,则可以执行一个小程序,该程序删除字符串中的一个字母,添加一个文本,删除所有其他字母,等等。

然后您可以自动化几个测试用例:

cat largetext.txt | ./my_python_program > output.pyhthon_program.txt
cat largetext.txt | ./my_cpp_program > output.cpp_program.txt
diff output.pyhthon_program.txt output.cpp_program.txt || echo "ERROR"

理想的情况是,每次编译时都运行测试(如果代码很简单,则可以完成;否则,可以在一天结束时进行测试)。

这不是 grant 程序是相同的(您无法测试所有可能的输入)。但是给您一些信心。如果发现不正确的地方,请首先将其添加到测试中,然后使其失败,然后对其进行修复,直到通过为止。

致谢。