linux - Debug模式下速度极慢?

标签 linux performance debugging gcc

在 Linux 上没有太多经验,我有一些经过良好测试的代码,没有从 MSVC、ICC 得到编译错误/警告,在 Windows 平台上也能完美运行。

然后我将这些代码复制到我新安装的 linux 系统(带有 GCC 4.8.1 的 Ubuntu 13.10),然后我使用 CDT 安装了最新版本的 eclipse(3.8.1 左右)并使用系统的 GCC 编译器对其进行了配置。

Eclipse CDT/GCC 可以很好地处理我编写的所有琐碎的测试代码,然后我要求 GCC 从 Windows 编译大量经过良好测试的代码。

GCC 编译它没有错误也没有警告,并且程序在微不足道的工作负载下运行良好,但是,一旦我给程序一些真实世界的负载,它基本上卡住,需要永远完成(在 Windows 中,同样的程序可以在几秒钟内完成“真实世界”的有效载荷。

谁能告诉我我应该寻找什么来解决这个问题,或者 GCC 在 Debug模式下太慢了(我的意思是,至少比 ICC/MSVC 的 Debug模式慢 2-3 个数量级),谢谢。

Release模式的编译优化级别设置为 O3, Debug模式的默认设置(没有优化,或者至少我是这么认为的)。

问题是,我的感觉是 ICC/MSVC 的 Debug模式(没有优化)二进制文件比 GCC 的二进制文件快得多(我的意思是,大约快 1000 倍)。

更新:(目前我似乎无法在 stackoverflow 发表评论,所以我必须在这里回复,抱歉):

ams: 好吧,我等了几分钟,看到程序还在运行我就中止了它,所以我不知道程序是否能完成。但是,只要payload很小,就可以正常完成。

至于代码的瓶颈,嗯,我认为是内存限制。

代码的大部分时间 (80+%) 都在对大型输入数据数组进行基数排序,我编写的优化基数排序代码可以在 Windows 中每秒对 200-3 亿个 32 位浮点值进行排序,但是使用相同的硬件,在 Linux 中,似乎要花费数小时甚至永远来对大约 1000 万长度的数据数组进行排序。

更新:

感谢大家的帮助,我发现问题出在我在 linux 上搞砸的一些宏,现在一切正常。

最佳答案

你有三个选择:

  • 启用日志记录以查看代码的作用。如果您没有日志记录,请添加它。
  • 使用分析器收集有关时间花在何处的信息。看看valgrind .我有点担心您的应用程序永远不会终止;不确定 valgrind 是否可以处理这个问题。
  • 使用调试器并在一段时间后中断您的程序,看看它做了什么。重复直到你看到一个模式

关于linux - Debug模式下速度极慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047666/

相关文章:

python - 提高 python 正则表达式的性能

sql - 与非集群相比,外键列上的聚集索引是否可以提高联接性能?

c++ - 调试断言失败!内存释放错误

linux - Flexbuilder 3 Linux下安装

regex - 使用 grep 更改过滤字符串中的结果

c - c语言fopen隐藏文件

python - 非常慢的 Numpy 缓冲区指针访问

python - 如何让一个脚本在linux中一直运行?

windows - 将 Apache 2.2 作为单个 httpd.exe 运行以进行调试

xcode - Xcode中 'breakpoint'标记的颜色是什么意思