[Mew-dist 11519] Re: immv to large size directory

Kazumasa Utashiro utashiro at example.com
1999年 11月 29日 (月) 14:21:57 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [Mew-dist 11515] Re: immv to large size directory
Date: Mon, 29 Nov 1999 13:23:22 +0900

> > こころなしか速くなったような気がします。
> > どうもありがとうございました。
> 
> こころなしだと、あまり期待に添てないということですね。

Folder.pm への変更が、どの程度効くのか不明ですが、

From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [Mew-dist 11504] Re: immv to large size directory
Date: Sun, 28 Nov 1999 00:14:00 +0900

> +     # ad hoc but fast
> +     if (scalar(@messages0) == 1 && $messages0[0] eq 'new') {
> + 	local(*MDIR);
> + 	my(@msgs, $i);
> + 	my $max = "1";
> + 	opendir(MDIR, $folder_dir) || im_die("can't open $folder.\n");
> + 	@msgs = grep(/^\d+$/, readdir(MDIR));
> + 	closedir(MDIR);
> + 	foreach $i (@msgs) {
> + 	    if ($max < $i) {
> + 		$max = $i;
> + 	    }
> + 	}
> + 	return $max;
> +     }
> + 

数が多いと @msgs の処理も馬鹿にならないかもしれないので、配列を使わず
に一度にやっちゃった方がいいんじゃない?

	while (defined($i = readdir(MDIR))) {
	    if ($i =~ /^\d+$/ and $max < $i) {
		$max = $i;
	    }
	}

みたいな感じで。ちなみに上のコードはメール書きながら書いただけなので、
テストも何もしてません。

それと、メッセージが一つもなかった時には 1 が返るけどそれでいいのね。

--utashiro



Mew-dist メーリングリストの案内