首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cygwin中c++程序运行时间比linux长

cygwin中c++程序运行时间比linux长
EN

Stack Overflow用户
提问于 2012-03-10 00:40:59
回答 2查看 600关注 0票数 0

我有一个c++程序,它在cygwin中运行需要很长时间,而在linux机器上运行很快。我认为这可能是内存问题,并尝试打印使用的内存,这是我看到的:

Linux

虚拟内存:5072KB,常驻集大小(RSS):1064KB

Cygwin

虚拟内存:7672KB,常驻集大小(RSS):108928 KB

有没有人能告诉我是什么原因造成了这种差异?cygwin运行在64位windows和3 GB内存的笔记本电脑上。有一些旧的"C“代码,它在程序中执行malloc。将这些转换为标准的c++容器会有帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-10 00:48:47

Cygwin在Windows上提供了POSIX兼容层。这必然会比针对原生操作系统CRT构建的代码慢。

如果您的代码是标准C或C++,请使用MSVC或MinGW/GCC重新编译它,然后进行比较。

另一方面,mallocnew是不成问题的。堆分配的开销很大。

可能重要的是,Windows堆分配通常比Linux的实现更昂贵。这种差异的效果取决于您的代码。

票数 3
EN

Stack Overflow用户

发布于 2012-03-10 00:53:45

正如rubenvb所说,你不能不看代码就说出来--但是:

内存量是无关紧要的,可能是cygwin启动器或操作系统决定只分配大量内存给cygwin作业,因为这些内存没有被使用。因此,cygwin应用程序未来的内存分配将会更快。Linux报告内存使用的方式也有一个问题,它会进行优化分配,所以如果你分配了比如说1 Gb的内存,那么直到它被使用之前,内存实际上都不会被锁定到该进程中,并且任务不会显示为使用了1 Gb。

有些任务在Unix系统上非常便宜,但在Windows体系结构上却非常慢。最臭名昭著的是fork(),它在Unix应用程序中非常常见,但在Windows上却不是一个好主意

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9637731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档