【问题标题】:Executable slower in Cygwin under Windows than in Linux in VirtualBox在 Windows 下 Cygwin 中的执行速度比在 VirtualBox 中的 Linux 中慢
【发布时间】:2017-01-31 14:58:11
【问题描述】:

我的 Fortran 代码包含许多生成可执行文件的 .f 文件。我在 Linux 中(在 Virtual Box 中)运行了模拟并成功执行了该软件。当我在 Windows 的 Cygwin 环境中执行相同操作时,它运行成功但慢了几秒钟。我正在处理的 fortran 代码是一个迭代代码。每次迭代都慢了几毫秒。当我运行整个代码 1000 次时,它延迟了几秒钟。我使用时间包来了解虚拟框中的总执行情况。它给了 实际0m0.061s 用户 0m0.036s 系统 0m0.020s

在windows中使用powershell的measure命令:总执行时间=0.095秒

每次 Linux 赢得比赛,即使 Virtual Box 只占用了处理器内核的一半和内存的一半。这种行为是正常的还是有问题的?

【问题讨论】:

  • 你应该至少显示测量结果。几分钟或几小时中的几秒钟?这是什么代码?
  • @Daniel 请不要进行编辑以格式化每个恰好也是代码标记的单词。对代码使用代码标记。像 Linux 和 Windows 这样的词应该正常书写,并且首字母大写。
  • 另外,展示如何编译代码也很重要。特别是使用了哪些优化标志。

标签: linux windows fortran cygwin gfortran


【解决方案1】:

这很正常。 由于绕过 Windows 限制的变通方法的数量,cygwin 上的 fork 实现很慢。

您的重复编译可能会在分叉期间浪费大量时间。

【讨论】:

  • 为什么一个简单的迭代程序会做任何分叉?
  • 运行代码 1000 次,所以 1000 次分叉,可能是 1000 次杀毒检查。使用 strace 检查代码占用系统时间的位置,它可以为您提供额外的数据。
  • 所以他单独运行可执行文件 1000 次,而不是在一个可执行文件中执行 1000 次计算?那确实几乎可以做任何事情......
猜你喜欢
  • 1970-01-01
  • 2011-01-22
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2015-11-20
  • 2015-12-27
相关资源
最近更新 更多