0

我使用一个名为ChatScript的开源项目来开发自然语言处理应用程序。

当您使用 ChatScript 执行构建操作时,它会扫描构成您的聊天机器人的所有脚本文件。就我而言,这是数百个文件。此过程在Windows 8.1上比在Ubuntu 16.04上花费的时间长近30 倍。因此,我的大部分工作都使用 Linux,但由于某些相关工具,我必须在Windows上完成部分工作,所以我想修改代码库,以便Windows ChatScript 编译速度与在 Linux 上。

谁能想到代码在WindowsLinux上运行得这么慢的原因?由于每个平台上运行的 C++ 运行时库的差异,是否有一些 C++ 文件操作代码(读/写/等)在Windows上比Linux慢得多

4

3 回答 3

3

通过您最后一段中的“代码运行缓慢”,我从上下文中假设您指的是编译器???

多年来,我经常且始终如一地遇到 linux 和 Windows 在磁盘 I/O 方面普遍存在的显着性能差异。NTFS(Windows 文件系统)和 linux 文件系统处理大量文件的情况不同,在我遇到的情况下,linux 总是更快。

您可能会从回答诸如如何让 Windows 像 Linux 一样快地编译 C++ 之类的问题的答案中受益?,例如对 Windows 驱动器进行碎片整理,以及检查编译器优化的配置方式;其中一些可能会减慢编译器的速度(尽管积极的编译器优化设置会减慢编译器的速度,但您最终会生成更快的可执行文件,但这可能是您在完成大部分开发后切换到的东西)。

但是为我做所有这些事情从来没有让 Windows 编译比使用等效磁盘硬件的 Linux 更快,不是一次。如果您的代码在一个磁盘上并为两个编译提供了源代码,那么您在 Windows 构建中看到的任何改进(例如,因为代码放在 SSD 上)都可能会在 linux 构建的改进中得到复制。

于 2018-01-20T13:19:46.093 回答
1

只是为了确认我发现了同样的事情。在普通 Mac 和快速 XPS 15 上运行相同的 Chatscript 脚本。Mac 编译代码的速度比 Windows 快 30-50 倍。奇怪的是 ChatScript 最初是为 Windows 开发的。尽管 Windows PC 硬件比运行脚本的 Mac 强大得多,但我也没有弄清楚为什么会有如此巨大的滞后。

于 2019-01-24T01:23:54.300 回答
0

所以我遇到了解释和(部分)解决方案。与 Linux 相比,Windows 有两个滞后领域:

  • 网络行为。根据 ChatScript 的创建者 Bruce Wilcox 的说法,Windows 服务器代码在底层更糟糕,并且在 ChatScript for Windows 与 ChatScript for Linux 中的实现也更差。然而,这里的滞后很小。

  • 建造时间。这是在 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,或者将其关闭,构建差异将在很大程度上消失。

于 2019-01-25T15:53:46.810 回答