删除/免费效果变化

时间:2016-03-30 15:07:26

标签: c++ free

我在Windows 7下开发了一个在Qt Creator下使用Qt 5.5和MSVC 2013打开和处理文件的应用程序。

我在应用程序上看到了一些奇怪的延迟:当我打开文件时,需要5秒钟。重新启动应用程序,需要1分钟以上。重新启动:5秒钟。

这似乎是随机的,当我描述我的应用程序(使用Very Sleepy CS)时,我看到删除总共花了130秒的0.03秒,而且花了124秒,新的3秒。

我在代码中使用了一些新的数组[]和删除[]。 我不知道是什么原因造成了这种错误......其他开放的程序甚至没有改变。

任何建议/想法?

编辑:让我们更精确: 我想知道某些事情是否会导致随机有效/无效。 我描述了我的应用程序,瓶颈是免费的。 我不直接打电话,因为我使用delete []。 我需要使用delete []来处理数组,这在我的情况下是最快的方式,性能非常重要。

1 个答案:

答案 0 :(得分:0)

建议:这里出了点问题。有些东西没有像预期的那样工作。有一些关于微观优化的建议,但在你弄清楚发生了什么之前,这并没有帮助。

如果您可以在五秒钟内打开该文件,那么它不应该再花费更多时间。如果您读取2GB文件并且第二次将其全部缓存在RAM中,则可能是相反的情况。但不是你正在经历的。

可能性是例如通过错误的网络连接访问服务器,或某些未定义的行为,如

size_t size; // Forgot to initialise
void* p = malloc (size);
memset (p, 0, size);
free (p);

可能一次都没有时间,而另一次则需要130秒。你的应用程序可能会使用多线程并陷入糟糕的状态,有时甚至没有进步。

我只是启动应用程序,在60秒后进入调试器,并检查它到底在做什么:-)或者使用分析器: - )