0 票
825 次浏览

有很多其他帖子提到了 CPU,但我不确定我的问题是否直接相关,所以我开了一个新话题。如果我本应回复之前的帖子,请见谅。
我一直觉得 PT8 有点慢,但我同时打开了很多资源,所以觉得这很正常。我原本希望 PT9 会更快,但速度还是一样。我通常开着 Chrome,但即使不开,速度似乎也没有提升。有些搜索即使结果很多也很快(例如搜索“reckon”在不到一秒内找到了 275 个结果),但有些搜索非常慢,甚至根本没有返回结果(例如搜索“. (see”运行了好几分钟,我不得不多次使用任务管理器关闭 PT)。发生这种情况时,CPU 使用率似乎接近 100%。

我使用的是 Windows 10 (1903),内存为 16GB。处理器型号如下(如果这对谁有用的话):
图片

关于如何总体提升 PT 的速度或让所有搜索正常工作,大家有什么建议吗?

机器翻译自 English
Paratext 中 由 (213 分) 发布
已重新显示 | 825 次浏览

3 个回答

0 票
最佳答案

请通过 Help > Give feedback 报告此类问题。在性能正常的电脑上,任何搜索都不应超过几秒钟。
这类问题通常源于我们在内部创建正则表达式来执行搜索,并且出现过几次生成的正则表达式因负向后行断言(negative look-behind)导致无限循环的情况(这被称为 灾难性回溯,且永远不会结束)。看起来你又发现了这个问题的一个案例。

机器翻译自 English
由 [Expert]
(16.7k 分) 发布

已重新显示

已报告

机器翻译自 English

你链接到了 RegexBuddy 创建者的文档。我经常使用它来帮助我构建良好的正则表达式,但我知道不同版本的 RegEx 有不同的语法。RegexBuddy 允许用户在适当的版本之间切换,但我并不总是确定应该选择哪一个。

有人能告诉我以下位置使用的正则表达式版本对应的正确“RegexBuddy”选项吗:

  • Paratext 9 Find/Replace
  • Paratext 9 RegexPal
  • Changes.txt, FinalChanges.txt, PrintDraftChanges.txt, DBLchanges.txt 等
  • SIL Encoding Converters
  • InDesign 中的 Grep Styles
机器翻译自 English
0 票

好吧,你确实找到了一个让开发人员测试的最佳搜索表达式。我刚刚在一个完整的圣经项目中搜索了
. (see
并开始计时。我在 4 分半钟后放弃了并取消了搜索。我有一台第 10 代 i7 处理器,6 核心,16GB 内存,所以这会让任何人的电脑都瘫痪。

我刚刚试了 9.1 版本,情况并没有好转。

机器翻译自 English
由 [Moderator]
(1.3k 分) 发布

已重新显示

如果你取消勾选“忽略空白差异”复选框(在 More>> 下),会有区别吗?

这其实不是一个解决方案,因为你可能确实想要匹配一个或多个空格,但这可能有助于找出导致变慢的原因。

机器翻译自 English

12 秒。看起来我们在“忽略空白差异”选项上存在问题。

机器翻译自 English
0 票

我只能回答关于 PT9 Find/Replace、RegexPal、PrintDraftChanges.txt 和 DBLchanges.txt 的问题。它们都使用 .Net 内置的正则表达式引擎:C# (.NET 2.0–4.8 & .NET Core 1.0–3.0)。

机器翻译自 English
由 [Expert]
(16.7k 分) 发布

已重新显示

这段看似无害的文字中隐藏着一个非常重要的信息。你是说 Paratext 9 的 RegExPal 现在使用与 Paratext Find/Replace 相同的正则表达式版本吗?这意义重大且非常受欢迎,尽管我将不得不修改我的正则表达式库。完全值得。

机器翻译自 English

我认为是的。这有点复杂。

在 Paratext 7.x 中,RegExPal 使用 Python 进行正则表达式搜索。为了简化 Paratext 8 中的代码,我们改为使用 IronPython,它是使用 .Net 实现的 Python。查看 IronPython 的源代码,似乎它使用 .Net 正则表达式引擎来实现 Python 正则表达式。

然而,由于普通 Python 和 .Net 的正则表达式实现之间存在细微差异,我猜测 IronPython 必须对表达式进行一些微调,以使其与 .Net 的实现兼容。我不完全确定它是否确实对正则表达式进行了一些处理以使其工作,或者这些更改是否会使 IronPython 与普通 .Net 略有不同。:sweat_smile:

机器翻译自 English

我想指出,在 Find 中,换行符会被忽略,因此你无法搜索类似 \\s .* 的内容来查找章节标题。即使你包含 (?-s),新行仍会被忽略。

机器翻译自 English

anon848905,你在 Find 对话框中提到的限制是有问题的。近几个月来,由于这种“忽略换行符”的现实情况,我与用户分享的许多表达式不再有效(如果它们在 pt9 中)。我经常使用负向字符类来实现“直到……”的功能……最常见的是

  • 直到新行:[^\r]+
  • 直到下一个标记(在同一行上)[^\r\\]+

这些表达式(或技术)用于将搜索限制在上下文中,现在不再有效。

我想再次提到,这对于那些不想深入使用 RegexPal 的用户,或者需要在 Paratext 中逐个修复大量问题的用户来说,是一个问题。

机器翻译自 English

你可以做的一件事是,通过导出 RegExPal 列表,用文本编辑器稍作调整,然后发送给其他用户,让他们在 List Window 中打开,以此与其他用户分享复杂的 RegEx Find。

机器翻译自 English

相关问题

0 票
1 个回答 205 次浏览
Two of our translators are reporting PT 7.5 freezing on their computers. They are both Windows 8.1 and PT is up-to- ... what PT was doing that made this happen? Thank you, mnjames
mnjames 1.9k 发布 提问于 六月 23, 2015
Paratext 中
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
And I tell you that you are Peter, and on this rock I will build my church, and the gates of Hades will not overcome it.
Matthew 16:18
3,052 个问题
6,011 个回答
5,677 条评论
2,031 位用户