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を超えると書き込みができなくなります。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【鹿児島】5キロ2000円台ではコメ作りを続けられない――生産者不在で乱高下する米価。消費者も納得できる適正価格は実現するのか?★2 [シャチ★]
- 【独自】農水省内にコメ対策チーム あすにも立ち上げ方針 価格高騰などに対応 [少考さん★]
- 中居正広氏の暴露本争奪戦が水面下で始動 100万部超え間違いなし? [ネギうどん★]
- QRコード決済、なぜ今“やめる店”が出てきた? QRコード決済廃止で店舗が得る利点とは [パンナ・コッタ★]
- 「夫が私の不倫を言いふらしています」2度目の過ちで追い詰められた妻の苦悩 名誉毀損は成立する? [少考さん★]
- ハーバード大に日本学術会議…なぜ「学術研究」に圧力をかけるのか 「都合の悪い意見」を許せない悲しき権力 [少考さん★]
- この「コメ高騰・食糧難」の時代に「昆虫食」が攻勢をかけない理由マジで謎。もう抵抗なく食えそうなくらいに進化してるのに [399583221]
- 今日、インドのGDPが4兆ドルを突破し、日本を追い越して世界4位になったと発表される [949681385]
- 【実況】博衣こよりのえちえち鬼武者5🧪
- 【実況】博衣こよりのえちえち鬼武者6🧪
- 【二次】こんな女の子に「おいしそう!1個ちょうだい♡」と言われてギリギリ差し出せるものwwwwwwwwwwwwww
- QR決済、完全に終わる… 嫌儲板の予想していた通りだったな [452836546]