我使用一个名为ChatScript的开源项目来开发自然语言处理应用程序。
当您使用ChatScript执行构建操作时,它会扫描构成聊天机器人的所有脚本文件。在我的例子里,那是几百个文件。这个过程在Windows8.1上花费的时间几乎是的30倍,比在Ubuntu16.04上花费的时间长30倍。因此,我确实在我的大部分工作中使用了Linux,但是由于某些相关的工具,我必须在Windows上做一部分工作,所以我想修改代码库,以便使ChatScript编译与Linux上的编译速度一样快。
有人能想到为什么在Windows和Linux上代码运行速度会慢得多吗?是否有一些C++文件操作代码(读/写/等)这是众所周知的,比Linux慢得多,因为在每个平台上运行的C++运行时库有差异?
发布于 2018-01-20 13:19:46
在您的上一段中,通过“代码运行缓慢”,我从上下文中假定您指的是编译器?
多年来,我在磁盘I/O.NTFS (Windows文件系统)和linux文件系统处理许多文件的情况不同,并且linux总是在我所处的情况下更快,这是linux和Windows在磁盘上的一个普遍的、显著的性能差异。
在回答诸如在编译C++时,如何使Windows运行得与Linux一样快?之类的问题时,您可能会从一些指针中受益,比如整理您的windows驱动器,检查编译器优化是如何配置的;其中一些指针可以减慢编译器的速度(虽然激进的编译器优化设置可以减慢编译器的速度,但最终生成一个更快的可执行文件,但在完成大部分开发之后,您可能会切换到它)。
但是,为我做所有这些事情从来没有让Windows编译比在linux上使用等价的磁盘硬件更快,而不是一次。如果您的代码位于同一个磁盘上,并且为这两个编译提供了源代码,那么您将在Windows构建中看到的任何改进(例如,因为代码放在SSD上)也可能在linux构建的改进中复制。
发布于 2019-01-24 01:23:54
只是为了确认我发现了同样的东西。在普通Mac上和在快速XPS 15上运行相同的Chatscript脚本。Mac编译代码的速度是Windows的30-50倍。奇怪的是,ChatScript最初是为Windows开发的。我也没有弄明白为什么会有如此巨大的滞后,尽管Windows硬件比运行脚本的Mac要强大得多。
发布于 2019-01-25 15:53:46
所以我遇到了一个解释和一个(部分)解决方案。与Linux相比,Windows中有两个方面的滞后:
“奇怪的是巨大的差异,我们的硬件工程师之一 做了一些分析,发现真正的罪魁祸首是反病毒 软件。禁用的实时病毒保护功能 Windows防御程序将4分钟缩短到14秒!甚至 保持Windows活动,但不包含 ChatScript-主文件夹解决了大部分减速问题, 导致了大约20个for :build 0以完成。“(区域/视图线程/3575/)
因此,对于OP来说,如果将CS排除在Windows Defender之外,或者关闭它,构建差异将基本消失。
https://stackoverflow.com/questions/48356177
复制相似问题