【发布时间】:2016-09-25 20:19:08
【问题描述】:
我需要最小化包含对Regex.Matches() 的多次调用的文本处理内部循环中的内存分配数量。所以,问题是,给定文本长度(以字符为单位)t、正则表达式模式长度(以字符为单位)r 和匹配数m,@987654327 分配的内存的大致数量是多少@,这些分配的大小是多少?这些是否受到任何Regex 选项的影响?
我尝试过查看Regex 的source code 及其相关类,但由于它们的复杂性而受阻。也没有在网上找到很多与Regex.Matches() 的内存使用相关的文档。于是就有了这个问题。
【问题讨论】:
-
正则表达式有点像 FSM,因此它不应该占用比存储它所需的内存(可能是哈希表?)更多的空间,并且可能需要一些额外的空间用于回溯。所以它会受到设置和实际正则表达式的影响(正则表达式的长度与它无关,它的复杂性和某些功能使用确实如此),匹配的数量应该无关紧要(除了我猜的实际结果)。尝试过任何分析吗?
-
我已经理解了这个概念;实施就是问题所在。
标签: .net regex memory allocation