IsKoukoku() でこれは効くかも...... 最初のデータロードの部分は今
@FOX_Ro54 = map { [ (split /<>/)[5,6,7] ] } <ADFILE>;
ってなってますが,これを
@FOX_Ro54 = map {
my @a = (split /<>/)[5 .. 7];
eval { no warnings; [qr/$a[0]/, @a[1 .. $#a]]; };
} <ADFILE>;
のようにすると,ロード時に regex がプリコンパイルされて,その後の処理が軽くなりそう.
さらに,regex のエラートラップもロード時に行って,IsKoukoku() 内では
eval が不要になる,と(ダメポなのだけ除外され,他の正常なのは使われます).
# eval 内でも警告は発生するので no warnings 入れてますが,-w や use warnings してなければ不要です.
安直にテストしてみると,
% perl -we'use strict; use Benchmark; open F, $ARGV[0]; our @thr = <F>; close F; \
open F, $ARGV[1]; @_ = <F>; close F; \
our @rocka = map [(split /<>/)[5 .. 7]], @_; \
our @rockb = map { my @a = (split /<>/)[5 .. 7]; eval { no warnings; [qr/$a[0]/, @a[1 .. $#a]]; }; } @_; \
timethese(1, { a => sub { foreach my $res (@thr) { no warnings; eval { $res =~ /@$_[0]/; } foreach (@rocka); } }, \
b => sub { foreach my $res (@thr) { no warnings; $res =~ /@$_[0]/ foreach (@rockb); } } });' \
alaska/dat/1147437176.dat Rock54Data
Benchmark: timing 1 iterations of a, b...
a: 42 wallclock secs (41.94 usr + 0.00 sys = 41.94 CPU) @ 0.02/s (n=1)
(warning: too few iterations for a reliable count)
b: 42 wallclock secs (41.91 usr + 0.01 sys = 41.92 CPU) @ 0.02/s (n=1)
(warning: too few iterations for a reliable count)
% perl -we'use strict; use Benchmark; open F, $ARGV[0]; our @thr = <F>; close F; \
open F, $ARGV[1]; @_ = <F>; close F; \
our @rocka = map [(split /<>/)[5 .. 7]], @_; \
our @rockb = map { my @a = (split /<>/)[5 .. 7]; eval { no warnings; [qr/$a[0]/, @a[1 .. $#a]]; }; } @_; \
timethese(1, { a => sub { foreach my $res (@thr) { no warnings; eval { $res =~ @$_[0]; } foreach (@rocka); } }, \
b => sub { foreach my $res (@thr) { no warnings; $res =~ @$_[0] foreach (@rockb); } } });' \
alaska/dat/1147437176.dat Rock54Data
Benchmark: timing 1 iterations of a, b...
a: 42 wallclock secs (41.42 usr + 0.02 sys = 41.44 CPU) @ 0.02/s (n=1)
(warning: too few iterations for a reliable count)
b: 20 wallclock secs (20.25 usr + 0.00 sys = 20.25 CPU) @ 0.05/s (n=1)
(warning: too few iterations for a reliable count)
プリコンパイルしたのを m// 内に入れるとあまり意味ないっぽいですが,
単独で使えば二倍速ぐらいになるらしいと.
ところで,
$NG_word_ref->[0] = $matched; return $NG_word_ref;
の部分は
return [$matched, @$NG_word_ref[1 .. $#$NG_word_ref]];
のようにしないと,@FOX_Ro54 の中身を改変してしまう悪寒......
削除系呪文の bbsd 対応も行われ雪だるま以外での bbsd 利用への道も開けてきたし,
T-Banana の実験が一段落したら,このあたりもぼちぼちやりましょうってことで.
bbs.cgi再開発プロジェクト Part8
レス数が950を超えています。1000を超えると書き込みができなくなります。
2007/03/09(金) 12:35:00ID:jn3Jaewt0
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- ゼレンスキー大統領「平和実現するなら大統領を辞任する用意」 [少考さん★]
- 「マジでどうかしている」モーターショーに華を添える女性コンパニオンに批判の声、本人が“猛反論”も紛糾 [少考さん★]
- 【ワクチン】日本では高収入、高資産、正規雇用の人ほど新型コロナの陰謀論を信じる人が多い傾向 [七波羅探題★]
- 【教育】全て小中学生ともに、苦手な教科1位「算数・数学」、大差付け2位「英語」、5教科以外だと「体育」…なお一番人気は「社会」 [デビルゾア★]
- 【東京】「友人に刺された」足立区の路上で男性が刃物で胸を刺され死亡 10代少年を殺人未遂の疑いで逮捕 警視庁 [Ailuropoda melanoleuca★]
- 【社会】単身者の老後に不安「手厚いサポート」望む声 2050年には単独世帯数が44.3%へ [七波羅探題★]
- __フリードリヒ・メルツの保守党がドイツの国会選挙でショルツ首相を破り勝利、パヨがまた負けた [827565401]
- 全てが裏目に出たドイツ、ジャップより一足先に滅亡へwwwwwwwwwwwwww [918057362]
- 【悲報】フェミニストさん、東京オートサロンのコンパニオンにブチ切れも本人に論破される… [963243619]
- 米が高すぎて小麦食にしたら体調不良報告が続出😲関係あるのか [118990258]
- 【速報】ロシア、勝利宣言wwwwwwwwwwwwwwwwwwwwwwwww [308389511]
- 俺「Grok、嫌儲民を辛辣にディスってみて」 🤖「ワカリマシタ」 [384232311]