Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
7年前关闭。
Improve this question
我有一个perl脚本,它执行一些mysql连接来触发select查询。
我使用DBI perl模块执行相同的操作。
有时它消耗100%的CPU,却什么也不做。在消耗了99%到100%的CPU的同时,我得到了实时进程的gdb回溯。
我应该怎么办 ? (我正在使用CentOS 5.8版(最终版)kernel-2.6.18-308.el5)
此regexp的作用相同,但速度更快:
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
7年前关闭。
Improve this question
我有一个perl脚本,它执行一些mysql连接来触发select查询。
我使用DBI perl模块执行相同的操作。
有时它消耗100%的CPU,却什么也不做。在消耗了99%到100%的CPU的同时,我得到了实时进程的gdb回溯。
#0 0x0000003990a7c680 in memcpy () from /lib64/libc.so.6
#1 0x0000003992ae6e27 in Perl_regexec_flags () from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#2 0x0000003992a922d5 in Perl_pp_subst () from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#3 0x0000003992a8a39e in Perl_runops_standard () from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#4 0x0000003992a37ecc in perl_run () from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#5 0x00000000004017bc in main ()
我应该怎么办 ? (我正在使用CentOS 5.8版(最终版)kernel-2.6.18-308.el5)
最佳答案
有时,即使对中等数量的数据,正则表达式处理也可能需要花费很长时间。
假设您有一个这样的正则表达式:
my $data =~ s!.*findit:(.+)!$1!gis;
此regexp的作用相同,但速度更快:
my $data =~ s!\A.*findit:(.+)\z!$1!is;
10-06 08:47