首页 > 解决方案 > 如何比较cpp和python输出?

问题描述

我正在尝试在 C++ 中从 Python 重现一些功能。它是一种涉及大量子函数的数值方法。

有没有一种很好的方法可以将 Python 函数的值与我正在编写的 C++ 函数进行比较并且应该反映它们?

有人可以粘贴一些代码或提供迷你教程吗?或者一些指针或参考?

非常感谢!阿尔塔巴尔

标签: pythonc++performancefunctionbenchmarking

解决方案


测试。

为 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"

理想的情况是,每次编译时,测试都会运行(如果代码很简单,可以这样做;如果不是,您可以在一天结束时进行测试,例如)。

这并不意味着程序是相同的(你不能测试每一个可能的输入)。但是会给你一些信心。如果你发现有什么不对劲的地方,你首先将它添加到你的测试中,然后让它失败,然后修复它直到它通过

问候。


推荐阅读