Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将C++元程序与C代码进行比较?(运行时) < >我把C程序移植到C++模板元程序中。现在我想比较运行时。 由于C++程序中几乎没有运行时,我应该如何比较这2个程序。 我能比较C运行时和C++编译时间吗?或者它只是不可比较?_C++_C_Templates_Metaprogramming - Fatal编程技术网

如何将C++元程序与C代码进行比较?(运行时) < >我把C程序移植到C++模板元程序中。现在我想比较运行时。 由于C++程序中几乎没有运行时,我应该如何比较这2个程序。 我能比较C运行时和C++编译时间吗?或者它只是不可比较?

如何将C++元程序与C代码进行比较?(运行时) < >我把C程序移植到C++模板元程序中。现在我想比较运行时。 由于C++程序中几乎没有运行时,我应该如何比较这2个程序。 我能比较C运行时和C++编译时间吗?或者它只是不可比较?,c++,c,templates,metaprogramming,C++,C,Templates,Metaprogramming,如果我理解正确,您已经用一个完全基于模板的程序重写了一个C程序?因此,你比较了C程序和C++程序所花的时间,几乎没有时间,只是把结果写出来。 在这种情况下,我认为它相当不可——最终用户会看到C程序需要X秒运行,而C++程序立即完成。但是,开发者会看到C程序在X秒编译,C++在很多秒中编译。 你可以比较C++编译时间和C运行时间,如果这个应用程序被设计成产生结果并且从不运行两次,那么,是的,你可以用这种方式比较时间。如果程序设计为多次运行,则需要比较运行时间 我希望你在C++模板代码中放很多注释:

如果我理解正确,您已经用一个完全基于模板的程序重写了一个C程序?因此,你比较了C程序和C++程序所花的时间,几乎没有时间,只是把结果写出来。

在这种情况下,我认为它相当不可——最终用户会看到C程序需要X秒运行,而C++程序立即完成。但是,开发者会看到C程序在X秒编译,C++在很多秒中编译。 <>你可以比较C++编译时间和C运行时间,如果这个应用程序被设计成产生结果并且从不运行两次,那么,是的,你可以用这种方式比较时间。如果程序设计为多次运行,则需要比较运行时间

我希望你在C++模板代码中放很多注释:


另外,我很好奇-与两者的编译时间相比,C运行需要多长时间?

你可以比较任何你想比较的东西。关于什么应该被比较,没有一条真正的规则

您可以比较每个版本执行所需的时间,也可以比较编译每个版本所需的时间

或者您可以比较程序的长度,或者源文件中“r”字符的数量。 您可以比较每个文件的时间戳

你应该如何比较这两个节目取决于你想展示什么

如果要显示其中一个执行速度比另一个快,请同时运行两个,计算它们执行所需的时间,并比较这些数字

如果要显示其中一个编译速度比另一个快,则需要花费编译它们所需的时间

如果你认为C++程序的编译时间与C程序的运行时间之间的关系是相关的,那么比较那些


决定你想展示什么。那么你就知道该比较什么了。

< p>因为C++程序总是产生相同的结果,为什么要用它来处理呢?使用任一程序计算一次结果,然后用以下两种程序替换:

int main()
{
   printf("<insert correct output here>\n");
   return 0;
}

当今的C和C++编译器共享相同的后端,因此生成最可能的相同的汇编代码。

C++只是一个更具注释性的C,您仍然可以在使用Cplusplusing时编写好C


C只是C++的老兄弟。

< P>这是我想做的:

你还没有说你的c程序做了什么,所以让我们假设它计算一个余弦数到某种特定的精度。您已经将这个程序转换成基于C++模板的等价物,它在编译时做相同的事情,以产生编译时的持续值。这是一个合理的做法,因为您可能有一个使用硬编码余弦值的算法,并且您不希望有一个随机数字表。请参阅以获取此项的实际使用示例,或搜索Blitz和/或Todd Veldhuizen以获取更多示例

在这种情况下,你要比较C++正弦计算器的编译时性能和原C版本的运行时性能。 < >编译C++源文件的时间与运行C版本的时间的直接比较几乎可以肯定编译时间明显慢。但这并不是一个公平的比较,因为编译器所做的不仅仅是执行模板代码


<>编辑:你可以通过创建C++程序的副本来补偿编译器开销,它有一些与模板代码生成的代码相当的代码,即如果需要的话,你必须手工编译模板代码。如果你当时编译那个源,那么编译原C++模板程序的时间和时间的差异大概只是执行模板所需的时间。

我认为比较两个程序的编译时间,然后运行时有什么意义。然后,您就可以计算出您已分摊了多少额外编译时间的运行次数。

您的问题毫无意义。请走开,想一想,然后带着一个重新措辞的问题回来。首先,你说的运行时是什么意思?仍然没有解释运行时是什么意思。@Neil:是时候运行这个程序了?不如你添加一些关于这个程序正在做什么以及它的用途的信息。这可能会澄清你需要做什么。我想很多诋毁你的人不明白你想实现什么。@a.Levy我们不是诋毁者。就我自己而言,我讨厌猜谜游戏。编译器除了执行之外做什么?编译:-读取源文件,预处理它,解析它,生成机器代码
并写出目标文件。我想你可以补偿这一点-让我编辑一下上面的重播。你可能想在回答之前先看一下问题。我打赌他也试着看,只是和我们其他人一样感到困惑。