画像ファイルの一覧を作るのにこんな手続き書いてるんだけどサブフォルダがいっぱいあるフォルダを検索したときにやたら遅いです。
なにか高速化のいい手はあるでしょうか? filelist Tstringlist でグローバル変数。 

procedure TForm1.filesearch(ddir:string);
var
sr:TsearchRec;
res:integer;
i:integer;
ext:string;

begin
ListBox1.Items.BeginUpdate;

res:=FindFirst(ddir+'\*.*',faAnyFile,sr);
while res=0 do
 begin
  if not ((SR.Name='.') or (SR.Name='..')) then
   if ((SR.Attr and faDirectory) = faDirectory) then filesearch(ddir + '\' + SR.Name); //対象がディレクトリの場合、自分を再帰呼び出し
  else
   begin //対象がファイルの場合リストに追加
    ext:=LowerCase(extractfileext(sr.name));
     if (ext='.jpg') or (ext='.jpeg') or (ext='.bmp') then filelist.Add(ddir +'\'+sr.name);
   end;
  end;//if end
res:=FindNext(sr);
end; //while end

findclose(sr);

ListBox1.Items.Assign(filelist);
for i := 0 to ListBox1.Count-1 do
begin
 ListBox1.Items[i]:=ExtractFileName(ListBox1.Items[i]);
end;

ListBox1.Items.EndUpdate;
end;