在gcc的C程序中运行时间 - 有和没有valgrind

时间:2014-02-04 11:30:21

标签: c valgrind

我已经在C上编写了一个程序,现在我在gcc上运行它,使用valgrind(检测内存丢失的程序)。

问题是,当我在没有valgrind的情况下运行它时,它比使用valgrind更快更多。我已经尝试了几个输入,结果是当输入很高时,甚至不能以valgrind结束,但没有它需要几秒钟。

我的程序中有很多对malloc的调用,它可以相关吗?

不幸的是我无法发布我的代码,因为它是作业的一部分,我必须保持它离散。这个赋值可能会用valgrind检查,所以我必须解决它。

一般答案和可能的解决方案可能会有很大帮助。

由于

2 个答案:

答案 0 :(得分:2)

这是完全正常的。 Valgrind模拟你的代码,保持跟踪分配,释放,内存访问等等。

来自The Valgrind Quick Start Guide

Your program will run much slower (eg. 20 to 30 times) than normal, and use a lot more memory.

答案 1 :(得分:0)

Valgrind是拦截对malloc的调用以及自由收集其统计数据的其他事情。这种拦截正在减慢通话速度。没有什么可以反对的。