Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C与Python中的正则表达式性能_Python_Objective C_Regex - Fatal编程技术网

Objective-C与Python中的正则表达式性能

Objective-C与Python中的正则表达式性能,python,objective-c,regex,Python,Objective C,Regex,这个问题可能看起来很模糊,对不起。有没有人有使用Objective-C和Python编写正则表达式的经验?我想知道一个对另一个的表现如何?这比1快。运行速度,和2。内存消耗?我有一个始终在后台运行的Mac OS应用程序,我希望我的应用程序为正在保存的一些文本文件编制索引,然后保存结果。。。我可以用Obj-C在我的应用程序中编写一个regex方法,也可以用Perl或Python编写一个单独的应用程序(只是Python的初学者) (谢谢,我已经从你们中的一些人那里得到了一些很好的信息。嘘那些投了反对

这个问题可能看起来很模糊,对不起。有没有人有使用Objective-C和Python编写正则表达式的经验?我想知道一个对另一个的表现如何?这比1快。运行速度,和2。内存消耗?我有一个始终在后台运行的Mac OS应用程序,我希望我的应用程序为正在保存的一些文本文件编制索引,然后保存结果。。。我可以用Obj-C在我的应用程序中编写一个regex方法,也可以用Perl或Python编写一个单独的应用程序(只是Python的初学者)

(谢谢,我已经从你们中的一些人那里得到了一些很好的信息。嘘那些投了反对票的人;我是来学习的,有时我可能会有一些愚蠢的问题——这是交易的一部分。)


在我的Mac OS应用程序中,我将进行一些文本处理,我想知道在Python中这样做是否会更快


就开发时间而言,它将更快,几乎可以肯定。对于几乎所有的软件项目,开发时间作为成功的衡量标准在运行时占主导地位

如果您指的是运行时,那么几乎可以肯定您正在进行过早的优化,除非您已经证明缓慢的代码将导致无法忍受/明显的用户界面速度减慢

过早优化是万恶之源。 --


在我的Mac OS应用程序中,我将进行一些文本处理,我想知道在Python中这样做是否会更快


就开发时间而言,它将更快,几乎可以肯定。对于几乎所有的软件项目,开发时间作为成功的衡量标准在运行时占主导地位

如果您指的是运行时,那么几乎可以肯定您正在进行过早的优化,除非您已经证明缓慢的代码将导致无法忍受/明显的用户界面速度减慢

过早优化是万恶之源。 --


如果你在寻找原始速度,这两个都不是一个很好的选择。对于执行速度,您可以选择Perl。就编写代码的速度而言,Python或Perl都可以轻松地用Objective C编写代码,就像它们都可以轻松地击败Java解决方案一样。与需要更多代码行的解决方案相比,如果您所衡量的是解决问题的时间,那么编写代码所需时间更少的高级语言总是一个胜利

就实际运行时性能而言,Perl的正则表达式是用编码非常严格的C语言编写的,并且是已知的最快、最灵活的正则表达式。正则表达式优化器对已编译的正则表达式程序做了很多非常聪明的事情,例如应用Aho–Corasick起始点优化来查找交替trie的起始点,在O(1)时间内运行。没有其他人这样做。见鬼,我认为除了Perl之外,没有其他人会费心将交替优化为尝试,这是将您从O(n)带到O(1)的事情,因为编译器花了更多时间做一些智能的事情,因此解释器运行得更快。Perl正则表达式还在调试和评测方面提供了实质性的改进。它们也比Python更灵活,但仅调试就足以打破平衡

性能问题上唯一的例外是某些病态模式在任何递归回溯程序下运行时会退化,无论是Perl、Java还是Python。这些问题可以通过使用Russ Cox编写的极力推荐的
RE2
库作为替换插件来解决。我知道它可以作为Perl的一个透明替换正则表达式引擎,而且我非常确定我记得看到它也可以用于Python


另一方面,如果您真的想使用Python,但只是想要一个更具表现力和健壮性的正则表达式库,特别是在Unicode上表现良好的正则表达式库,,那么您需要使用Matthew Barnett的
regex
模块,该模块可用于Python2和Python3。除了符合tr18的1级法规遵从性要求(即Unicode正则表达式上的标准文档),它还具有各种其他聪明的特性,其中一些特性完全是独特的。如果你是一位正则表达式鉴赏家,这非常值得一看。

如果你想寻找原始速度,这两种方法都不是一个很好的选择。对于执行速度,您可以选择Perl。就编写代码的速度而言,Python或Perl都可以轻松地用Objective C编写代码,就像它们都可以轻松地击败Java解决方案一样。与需要更多代码行的解决方案相比,如果您所衡量的是解决问题的时间,那么编写代码所需时间更少的高级语言总是一个胜利

就实际运行时性能而言,Perl的正则表达式是用编码非常严格的C语言编写的,并且是已知的最快、最灵活的正则表达式。正则表达式优化器对已编译的正则表达式程序做了很多非常聪明的事情,例如应用Aho–Corasick起始点优化来查找交替trie的起始点,在O(1)时间内运行。没有其他人这样做。见鬼,我认为除了Perl之外,没有其他人会费心将交替优化为尝试,这是将您从O(n)带到O(1)的事情,因为编译器花了更多时间做一些智能的事情,因此解释器运行得更快。Perl正则表达式还在调试和评测方面提供了实质性的改进。它们也比Python更灵活,但仅调试就足以打破平衡

性能问题上唯一的例外是某些病态模式在任何递归回溯程序下运行时会退化,无论是Perl、Java还是Python。这些问题可以通过使用Russ Cox编写的极力推荐的
RE2
库作为替换插件来解决。我知道它可以作为Perl的透明替换正则表达式引擎使用,而且我非常确定我记得看到它也可以用于P