namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: page fault
馬場@京大宇宙物理 です。旧い話ですが...
Date: Hajime BABA <baba@xxxxxxxxxxxxxxxxxxxxxx>
From: [namazu:01761] Re: page fault
Subject: Fri, 11 Dec 1998 18:13:43 JST
> > mknmzを実行するとCPUの30%以上がシステム時間として消費されているんで
> > おっかしいなぁとおもってvmstatで観測すると
> > どうもpage faultが多いように思います。
> > 頻繁にnkfをfork/execするためかなぁと想像しているんですが、
> > 他の方はどうでしょうか。
> そうかもしれません。nkf1.7 の Perl module に変えたらちょっとは良く
> なるんじゃないだろうかという気はしていますが、試してないので定量的
> にはなんとも... _o_
現実逃避にちらっと試してみました。加えた変更は最後につけておきます。
変更は 1.3.0.1 の mknmz に対するものです。環境は Linux-2.0.33 /
Perl-5.005_01 / Pentium-120MHz / 40MBメモリで、他プロセスが動いて
いない中で数回繰り返し計った中での平均的な値を取ってみました。
% time ./mknmz.orig /usr/local/namazu/doc/ >& /dev/null
61.860u 1.600s 1:03.97 99.2% 0+0k 0+0io 4437pf+0w
% time ./mknmz.nkf_module /usr/local/namazu/doc/ >& /dev/null
62.160u 1.140s 1:04.09 98.7% 0+0k 0+0io 1860pf+0w
実行時間はほとんど変わりませんが、page fault は40%程度にまで減らせ
ています。mknmzからはKAKASIも呼んでますからこれ以上は下がらないだ
ろうけど... WindowsやOS/2環境で Perl モジュールが使えるかどうかし
らないのですが、UNIX環境だけに目を向けるなら、このような変更も多少
意味あるかもしれません。
# 別件ですが、Perl-5.004_04 だと Perl-5.005_01 より15%程度
# 時間が余計にかかっていました。これは既知ですか?
# まああまり気にしていませんが...
# % time ./mknmz.5.004_04 /usr/local/namazu/doc/ >& /dev/null
# 70.760u 2.320s 1:17.85 93.8% 0+0k 0+0io 5101pf+0w
--
馬場 肇 ( Hajime BABA ) E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士課程二回生
--
--- mknmz.orig Thu Dec 31 04:33:47 1998
+++ mknmz.nkf_module Thu Dec 31 05:47:02 1998
@@ -28,6 +28,7 @@
require 5.003;
use Cwd;
use Time::Local;
+use NKF;
use strict; # be strict since v1.2.0
# global values
@@ -561,17 +562,17 @@
last;
}
}
- if ($LANGUAGE eq "ja") {
- if ($filter eq "") {
- $filter = "$NKF -emXZ1 \"$cfile\" |";
- } else {
- $filter .= "$NKF -emXZ1 |";
- }
- } else {
+# if ($LANGUAGE eq "ja") {
+# if ($filter eq "") {
+# $filter = "$NKF -emXZ1 \"$cfile\" |";
+# } else {
+# $filter .= "$NKF -emXZ1 |";
+# }
+# } else {
if ($filter eq "") {
$filter = "$cfile";
}
- }
+# }
if ($ManOpt) { # man mode
if ($filter =~ /\|$/) {
$filter .= "$HELPER_PROGRAMS{'man'} |";
@@ -584,6 +585,7 @@
$filter =~ s|\\|\\\\|g if $SYSTEM eq "os2";
open(CFILE, $filter) || die "$cfile: $!\n";
$$contents = join("", <CFILE>);
+ $$contents = nkf("-emXZ1", $$contents) if ($LANGUAGE eq "ja");
# if a zipped file, the size has been changed
if ($zipped) {
@@ -1214,11 +1216,11 @@
# 例によって Win32 のパイプは変なので別処理になる
open(FLIST, ">$FLIST_") || die "Can't open $FLIST_.\n";
} else {
- if ($LANGUAGE eq "ja") {
- open(FLIST, "|$NKF -jZ >$FLIST_") || die "$FLIST_: $!\n";
- } else {
+# if ($LANGUAGE eq "ja") {
+# open(FLIST, "|$NKF -jZ >$FLIST_") || die "$FLIST_: $!\n";
+# } else {
open(FLIST, ">$FLIST_") || die "$FLIST_: $!\n";
- }
+# }
}
binmode(FLIST);
open(ERRORSFILE, ">>$ERRORSFILE") || die "$ERRORSFILE: $!\n";
@@ -1439,9 +1441,10 @@
if ($CCS eq "euc") {
print STDERR $USAGE_JA;
} elsif ($CCS eq "sjis") {
- open(NKF, "|$NKF -s");
- print NKF $USAGE_JA;
- close(NKF);
+# open(NKF, "|$NKF -s");
+# print NKF $USAGE_JA;
+# close(NKF);
+ print STDERR nkf("-s", $USAGE_JA);
}
} else {
print STDERR $USAGE_EN;
@@ -1569,17 +1572,18 @@
if (-e $template) {
my ($buf);
open(TEMPLATE, $template) || die "$template: $!\n";
- if ($LANGUAGE eq "ja") {
- open(OUTPUT ,"|$NKF -j >$full_path_name")
- || die "$full_path_name: $!\n";
- } else {
+# if ($LANGUAGE eq "ja") {
+# open(OUTPUT ,"|$NKF -j >$full_path_name")
+# || die "$full_path_name: $!\n";
+# } else {
open(OUTPUT ,">$full_path_name")
|| die "$full_path_name: $!\n";
- }
+# }
$buf = join('', <TEMPLATE>);
$buf =~ s/"/\\"/g;
$buf =~ s/\@/\\@/g;
$buf = eval("\"$buf\""); # eval to interpolate variables in $buf
+ $buf = nkf("-j", $buf) if ($LANGUAGE eq "ja");
print OUTPUT $buf;
@@ -2039,13 +2043,14 @@
if (-e $file) {
# ファイルは EUC で読み込みます
- if ($LANGUAGE eq "ja") {
- open(FILE ,"$NKF -e $file|") || die "$file: $!\n";
- } else {
+# if ($LANGUAGE eq "ja") {
+# open(FILE ,"$NKF -e $file|") || die "$file: $!\n";
+# } else {
open(FILE ,"$file") || die "$file: $!\n";
- }
+# }
binmode(FILE);
$buf = join("", <FILE>);
+ $buf = nkf("-e", $buf) if ($LANGUAGE eq "ja");
close(FILE);
} else {
my ($template, $fname);
@@ -2070,11 +2075,11 @@
}
# the file must be saved in ISO-2022-JP encoding.
- if ($LANGUAGE eq "ja") {
- open(FILE ,"|$NKF -j >$file") || die "$file: $!\n";
- } else {
+# if ($LANGUAGE eq "ja") {
+# open(FILE ,"|$NKF -j >$file") || die "$file: $!\n";
+# } else {
open(FILE ,">$file") || die "$file: $!\n";
- }
+# }
binmode(FILE);
if ($buf =~ /(<!-- FILE -->)\s*(.*)\s*(<!-- FILE -->)/) {
@@ -2093,6 +2098,7 @@
$buf =~ s/(<!-- KEY -->)(.*)(<!-- KEY -->)/$1 $tmp $3/;
}
$buf =~ s/(<!-- DATE -->)(.*)(<!-- DATE -->)/$1 $month\/$day\/$year $3/g;
+ $buf = nkf("-j", $buf) if ($LANGUAGE eq "ja");
print FILE $buf;
close(FILE);
@@ -2115,10 +2121,12 @@
my ($url, $title, $cfile_size, $contents, $headings, $cfile, $fields) = @_;
my $summary = make_summary($contents, $headings, $cfile, $fields);
+ $summary = nkf("-jZ", $summary) if ($LANGUAGE eq "ja");
$title =~ s/\s+/ /g;
$title =~ s/^\s+//;
$title =~ s/\s+$//;
$cfile_size = commas($cfile_size);
+ $title = nkf("-jZ", $title) if ($LANGUAGE eq "ja");
# FLIST へ書き出し <DT> の後に改行が欲しいのです
print FLIST "<DT>\n<STRONG><A HREF=\"$url\">$title</A></STRONG>\n";