【发布时间】:2014-09-20 07:51:10
【问题描述】:
我在一个很长的 UTF-8 字符串(约 250,000,000 个字符)上使用 substr。
问题是我的程序几乎在第 200,000,000 个字符附近冻结。
有人知道这个问题吗?我有哪些选择?
当我使用后缀数组索引文档时,我需要:
- 让我的绳子保持在一个整体;
- 使用索引访问可变长度子字符串。
至于 MWE:
use strict;
use warnings;
use utf8;
my $text = 'あいうえお' x 50000000;
for( my $i = 0 ; $i < length($text) ; $i++ ){
print "\r$i";
my $char = substr($text,$i,1);
}
print "\n";
【问题讨论】:
-
请注意,对于这么大的字符串,它可能会因为您最终使用虚拟内存而变慢。
-
当您说您需要索引时,您的实际意思是您需要随机访问字符串字符?
-
@salva 是的。但是我会说“可变长度的子字符串”而不是“字符”。
标签: perl unicode utf-8 substring