[Mew-dist 11504] Re: immv to large size directory
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
1999年 11月 28日 (日) 00:14:00 JST
From: yamagata at example.com
Subject: [Mew-dist 11497] immv to large size directory
> 一つのfolderに1万通とか2万通のmailをつっこんでいると
> directoryがむちゃくちゃ大きくなるせいか、
> そのfolderにimmvすると「ウッ」てかんじでかなり詰まります。
IM/Folder.pm がアホなせいかもしれません。
最大の値を探すだけなのに、メッセージを全部なめ、ソートして、しかもその
結果を使っていない。
以下のパッチを当てると少しはまともになりますか?
--かず@IM 捨てたい
-------------- next part --------------
? SetVersion
Index: immv.in
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/im/immv.in,v
retrieving revision 1.57
retrieving revision 1.58
diff -c -r1.57 -r1.58
*** immv.in 1999/11/23 22:24:36 1.57
--- immv.in 1999/11/27 15:15:11 1.58
***************
*** 188,196 ****
if ($NewMsgCache{$dst}){
$NewMsgCache{$dst} =~ s|([^/]+)$|$1+1|e; # increment cache
$dst_path = $NewMsgCache{$dst};
! } else {
! $dst_path = $NewMsgCache{$dst} = get_impath($dst, 'new');
! }
if ($opt_link && $src ne "") {
im_link($msg, $dst_path) || die $@;
} elsif ($link_it) {
--- 188,196 ----
if ($NewMsgCache{$dst}){
$NewMsgCache{$dst} =~ s|([^/]+)$|$1+1|e; # increment cache
$dst_path = $NewMsgCache{$dst};
! } else {
! $dst_path = $NewMsgCache{$dst} = get_impath($dst, 'new');
! }
if ($opt_link && $src ne "") {
im_link($msg, $dst_path) || die $@;
} elsif ($link_it) {
Index: IM/Folder.pm
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/im/IM/Folder.pm,v
retrieving revision 1.45
retrieving revision 1.46
diff -c -r1.45 -r1.46
*** Folder.pm 1999/11/23 22:24:39 1.45
--- Folder.pm 1999/11/27 15:15:11 1.46
***************
*** 277,282 ****
--- 277,298 ----
return ();
}
+ # 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;
+ }
+
my @filesinfolder = message_list($folder_dir);
@messages = @x = ();
Mew-dist メーリングリストの案内