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を超えると書き込みができなくなります。
ニュース
- 【速報】 米国、中国製品に145%の関税 ホワイトハウス声明 ★2 [お断り★]
- トランプ氏 日米安保に重ねて不満 “米国不利になる取り引き” [香味焙煎★]
- 30歳未満の手取り増やす…国民民主党の若者減税法案 30代「なぜ若者だけ?」「うちらも同じにして」 専門家「39歳まで入れておくべき」 [樽悶★]
- 国民民主党の若者減税法案に賛否両論「世代分断」「壁作ってどうする」の声…氷河期世代は反発「なぜ一番苦しんだ世代を見捨てるのか」 [樽悶★]
- 一律給付の舞台裏 「消費減税は自民が割れる」森山幹事長、首相を説得 [蚤の市★]
- 「女子高校生が履き古した上履き」がフリマアプリで高騰…しかし、「出品前に考えておくべきこと」(川崎 さちえ氏) [少考さん★]
- 河原乞食「有名税というものはなくてー。僕たちにもプライバシーというものがあってー」 ⬅︎これ [384232311]
- 【超絶悲報】トランプ政権、反ユダヤDSの巣靴コロンビア大学を裁判所の監視下に置くことを検討。政府方針に従わなければ法廷侮辱罪 [519511584]
- ドル/円 143円 [882679842]
- ワイ社畜、吐く🤮
- 【悲報】元アイドルの女性(28)「聖教新聞に私のインタビューが掲載されています!」→ドルヲタ「お前創価だったのかよ…」→炎上 [515718387]
- 【画素】朝玄関「ピンポーンw」 40代弱男ワイ「誰やろ…」ガチャッ →