REALbasicのStringルーチンはとっても遅いよね。TBFinderは、そのルーチンをいっぱい使ってるから、とっても処理が遅いんだ。でもね、私のRbStringUtil、Micono Mid、Micono InStrというpluginを使えばTBFinderの処理が10〜1000倍も速くなるよ!
TBFinderはオープンソースだから、処理の遅い、CountFields, NthField, Replace, ReplaceAllのルーチンをmic_CountFields, mic_NthField, mic_Replace, mic_ReplaceAllに、Mid, InStrをmic_Mid, mic_LenMid, mic_InStr, mic_StartInStrに置き換えるだけだよ(図参照)。

#新しいバージョンのTBFinderがRbStringUtilを採用してくれるといいのにね。
※TBFinderをビルドするには、Thomas Tempelmann氏のpluginが必要だよ (TT's Alias Mgr Plugin, TT's FolderItem-Plugin, TT's MemoryBlock-Plugin)。これらのpluginはhttp://www.tempel.org/rbからゲットできるよ。
その他: 速くなり過ぎるせいか、私のpluginを使った場合、変える必要のある部分がもう一ケ所あります。SmartListWNDウインドウクラスのCreateIndexメソッドを以下にならって編集して下さい。
----------------------------------------------------------------
SmartListWND
----------------------------------------------------------------
Function CreateIndex( w as progressWND ) As Boolean
dim f as folderitem
dim fx as SmartFolderItem
dim i as integer
dim bufStop as double //追加
redim IndexItems(0)
f = GetUniversalHeaders()
if f = NIL or not f.exists then
StopAlert( "Could not find メUniversal Headersモ" , "Please locate
the folder
containing the Universal Header filesノ") // jakobb
f = SelectFolder()
if f = nil then
return false
end
end if
if f <> NIL then
if w <> NIL then
w.InitProgress 1,f.count
w.Show
w.refresh
end if
bufStop = Microseconds //追加
for i = 1 to f.count
fx = new SmartFolderItem
while Microseconds-bufStop < 100000 //追加
wend //追加
fx.file = f.item(i)
fx.id = i
IndexItems.append fx
if w <> NIL then
if w.curThread.stop then
if GetIndex(idxName) then
SmartList_Show
end if
return FALSE
end if
w.ShowStatus(i, "Parsing: " + fx.file.name, str(f.count-i))
end if
bufStop = Microseconds //追加
FindTBCallsInFile fx
next
end if
return f<> NIL
-----------------------------------------------------------------
免責と著作