我使用名为ChatScript的开源项目进行自然语言处理应用程序开发。
使用ChatScript执行 build 操作时,它会扫描构成chat-bot的所有脚本文件。就我而言,这是数百个文件。与 Ubuntu 16.04 相比, Windows 8.1 上的此过程几乎 30次。因此,我做在我的大部分工作中都使用Linux,但由于某些相关工具,我必须在 Windows 上完成我的工作的一部分,所以我想修改代码库,以便 Windows ChatScript编译速度与Linux上一样快。
有没有人能想到代码在 Windows 与 Linux 上运行得如此之慢的原因?是否存在一些C ++文件操作代码(读/写/等),与 Linux 相比, Linux 上的 更慢在每个平台上运行的C ++运行时库中的差异?
答案 0 :(得分:3)
通过上一段中的“代码运行缓慢”,我假设您从上下文中指的是编译器???
多年来,我一直经常遇到磁盘I / O中Linux和Windows之间普遍存在的显着性能差异。 NTFS(Windows文件系统)和linux文件系统以不同的方式处理大量文件的情况,在我遇到的情况下,linux总是更快。
您可以从How do I get Windows to go as fast as Linux for compiling C++?等问题的答案中获得一些好处,例如对Windows驱动器进行碎片整理,以及检查编译器优化的配置方式;其中一些可能会降低编译器的速度(尽管积极的编译器优化设置可能会降低编译器的速度,但最终会生成更快的可执行文件,但这可能是您在完成大部分开发后切换到的内容)。
但为我做所有这些事情从来没有让Windows编译比使用等效磁盘硬件的Linux更快,而不是一次。如果您的代码位于一个磁盘上并且来自两个编译,那么您在Windows版本中看到的任何改进(例如因为代码放在SSD上)都可能会在Linux版本的改进中被复制。
答案 1 :(得分:1)
只是为了确认我发现了同样的事情。在普通Mac和快速XPS 15上运行相同的Chatscript脚本。Mac编译代码的速度比Windows快30-50倍。奇怪的是,ChatScript最初是为Windows开发的。尽管Windows PC硬件比运行脚本的Mac强大得多,但我也没有弄清楚为什么会有如此巨大的滞后。
答案 2 :(得分:0)
所以我遇到了一个解释和一个(部分的)解决方案。与Linux相比,Windows有两个滞后区域:
网络行为。根据ChatScript的创建者布鲁斯的说法 Wilcox,Windows服务器代码在后台更差,而且 与Windows的ChatScript相比,Windows的ChatScript中实现的效果更差。 但是,这里的延迟很小。
构建时间。这是在Linux中构建机器人需要10-20的地方 秒,在Windows上为4-5分钟。 事实证明,原因是 防病毒软件:
“我们的硬件工程师之一对巨大的差异感到好奇
做了一些分析,发现真正的罪魁祸首是杀毒软件
软件。 禁用实时病毒防护功能
Windows Defender将4分钟缩短为14秒!偶
保持Windows Defender处于活动状态,但排除
ChatScript-master文件夹解决了许多减速问题,
:build 0完成大约需要20秒。” (https://www.chatbots.org/ai_zone/viewthread/3575/)
因此对于OP,如果从Windows Defender中排除CS或将其关闭,则构建差异将基本消失。