Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2018-03-04 09:04:22 ЛС | профиль | цитата
W7, 32. У меня 27.5 сек.

Add(MainForm,10105924,518,385)
{
Point(onClose)
link(onCreate,14931663:doOpen,[])
link(onClose,14931663:doClose,[])
}
Add(ListBox,1966354,287,168)
{
Left=5
Top=30
Width=85
Height=120
Strings=#9:1Кстр.txt|10:20Кстр.txt|10:50Кстр.txt|11:100Кстр.txt|11:200Кстр.txt|11:500Кстр.txt|9:1Мстр.txt|9:2Мстр.txt|9:4Мстр.txt|
DataType=1
link(onClick,15682436:doStrCat,[])
}
Add(StrCat,15682436,336,175)
{
link(onStrCat,6545833:doValue,[])
link(Str1,133349:CurrentDir,[])
}
Add(MemFifo,6545833,378,175)
{
link(onData,15391033:doString,[])
}
Add(FormatStr,15391033,434,175)
{
link(onFString,16460589:doText,[])
link(Str1,1438867:Var3,[(440,166)(426,166)(426,222)])
link(Str2,8885844:Var1,[(447,159)(419,159)])
}
Add(Edit,16460589,483,175)
{
Left=5
Top=5
Width=380
}
Add(Button,9617827,140,266)
{
Left=105
Top=60
link(onClick,14083436:doEvent1,[])
}
Add(StrList,7122459,245,238)
{
link(FileName,1438867:Var1,[(258,222)])
}
Add(StrList,12071239,406,252)
{
link(FileName,8885844:Var2,[])
}
Add(GetDataEx,1438867,378,217)
{
link(Data,6545833:Value1,[])
}
Add(GetDataEx,8885844,413,210)
{
Angle=3
link(Data,6545833:Value2,[(391,215)])
}
Add(Hub,14083436,189,266)
{
OutCount=5
link(onEvent1,7122459:doLoad,[])
link(onEvent3,12071239:doLoad,[])
link(onEvent4,8693979:doStart,[(235,293)(235,384)])
link(onEvent5,3833996:doEnum,[])
}
Add(ArrayEnum,3833996,259,294)
{
link(onItem,6489984:doString,[])
link(onEndEnum,7508669:doEnum,[(304,307)(304,335)])
link(Array,7122459:Array,[])
}
Add(TimeCounter,8693979,469,378)
{
link(onStop,10105924:doCaption,[])
}
Add(Dir,133349,336,126)
{
}
Add(DS_SQLite,14931663,567,399)
{
@Color=5635925
Name="DB"
FileName=":memory:"
link(onOpen,9656551:doExec,[])
}
Add(DSC_Exec,9656551,616,399)
{
@Color=5635925
SQL="CREATE TABLE hashtub([hash] TEXT UNIQUE);"
DSManager="DB"
}
Add(FormatStr,6489984,308,294)
{
DataCount=1
Mask="INSERT INTO hashtub values('%1');"
link(onFString,12725188:doWork1,[(508,300)])
}
Add(ArrayEnum,7508669,420,329)
{
link(onItem,12304374:doString,[])
link(onEndEnum,8693979:doStop,[(460,342)(460,391)])
link(Array,12071239:Array,[])
}
Add(DSC_Exec,8307403,518,329)
{
@Color=5635925
DSManager="DB"
}
Add(FormatStr,12304374,469,329)
{
DataCount=1
Mask="INSERT OR IGNORE INTO hashtub values('%1');"
link(onFString,12725188:doWork2,[])
}
Add(HubEx,12725188,504,329)
{
link(onEvent,8307403:doExec,[])
}

У Леонида должно отработать быстрее.

Три файла по: 1000, 20 000 и 50 000 строк.
И 2.5 сек. с записью на диск:

Add(MainForm,10105924,287,98)
{
Point(onClose)
link(onCreate,14931663:doOpen,[])
link(onClose,14931663:doClose,[])
}
Add(ListBox,1966354,287,175)
{
Left=5
Top=30
Width=85
Height=120
Strings=#9:1Кстр.txt|10:20Кстр.txt|10:50Кстр.txt|
DataType=1
Point(doEnsureVisible)
Point(EndIdx)
Point(doSelect)
Point(onSelect)
link(onSelect,7469119:doEvent1,[])
}
Add(Button,9617827,49,203)
{
Left=105
Top=60
link(onClick,7186066:doEvent1,[])
}
Add(StrList,12071239,385,161)
{
}
Add(TimeCounter,8693979,238,91)
{
link(onStop,5839741:doWork2,[])
}
Add(DS_SQLite,14931663,336,112)
{
@Color=5635925
Name="bd"
FileName="20180304.db"
link(onOpen,9656551:doExec,[])
}
Add(DSC_Exec,9656551,385,112)
{
@Color=5635925
SQL="CREATE TABLE hashtub([hash] TEXT UNIQUE);"
DSManager="bd"
}
Add(ArrayEnum,7508669,399,273)
{
link(onItem,12304374:doString,[])
link(Array,12071239:Array,[])
}
Add(DSC_Exec,8307403,504,273)
{
@Color=5635925
DSManager="bd"
link(onError,5839741:doWork1,[(547,286)(547,95)(277,95)])
}
Add(FormatStr,12304374,448,273)
{
DataCount=1
Mask="INSERT OR IGNORE INTO hashtub values('%1');"
link(onFString,15643894:doWork2,[])
}
Add(For,16149570,147,224)
{
link(onEvent,11199240:doEvent1,[])
link(onStop,16280388:doEvent1,[])
link(End,1966354:EndIdx,[(160,198)(229,198)(229,250)(314,250)])
}
Add(Hub,11199240,238,224)
{
link(onEvent1,1966354:doSelect,[])
link(onEvent2,1966354:doEnsureVisible,[(270,237)(270,223)])
}
Add(Hub,7469119,336,189)
{
link(onEvent1,12071239:doLoad,[])
link(onEvent2,7508669:doEnum,[(367,202)(367,279)])
}
Add(Hub,7186066,98,203)
{
OutCount=3
link(onEvent1,8693979:doStart,[(123,209)(123,97)])
link(onEvent2,14244392:doData,[])
link(onEvent3,16149570:doFor,[(130,223)(130,230)])
}
Add(HubEx,5839741,273,98)
{
link(onEvent,10105924:doCaption,[])
}
Add(HubEx,15643894,490,273)
{
link(onEvent,8307403:doExec,[])
}
Add(DoData,14244392,448,210)
{
Data=String(BEGIN )
link(onEventData,15643894:doWork1,[(494,216)])
}
Add(Hub,16280388,189,231)
{
link(onEvent1,633462:doData,[(213,237)(213,328)])
link(onEvent2,8693979:doStop,[(221,244)(221,104)])
}
Add(DoData,633462,448,322)
{
Data=String(END;)
link(onEventData,15643894:doWork3,[(494,328)])
}
И 3.7 сек. с записью на диск, с проверкой на "пусто" и ограничением длины строк.

Add(MainForm,10105924,287,98)
{
Point(onClose)
link(onCreate,14931663:doOpen,[])
link(onClose,14931663:doClose,[])
}
Add(ListBox,1966354,287,175)
{
Left=5
Top=30
Width=85
Height=120
Strings=#9:1Кстр.txt|10:20Кстр.txt|10:50Кстр.txt|
DataType=1
Point(doEnsureVisible)
Point(EndIdx)
Point(doSelect)
Point(onSelect)
link(onSelect,9357173:doSearch,[(335,195)(335,279)])
}
Add(Button,9617827,49,203)
{
Left=105
Top=60
link(onClick,7186066:doEvent1,[])
}
Add(TimeCounter,8693979,238,91)
{
link(onStop,5839741:doWork2,[])
}
Add(DS_SQLite,14931663,336,112)
{
@Color=5635925
Name="bd"
FileName="20180304.db"
link(onOpen,9656551:doExec,[])
}
Add(DSC_Exec,9656551,385,112)
{
@Color=5635925
SQL="CREATE TABLE hashtub([hash] TEXT UNIQUE);"
DSManager="bd"
}
Add(DSC_Exec,8307403,567,273)
{
@Color=5635925
DSManager="bd"
link(onError,5839741:doWork1,[(608,286)(608,92)(277,92)])
}
Add(FormatStr,12304374,511,273)
{
DataCount=1
Mask="INSERT OR IGNORE INTO hashtub values('%1');"
link(onFString,15643894:doWork2,[])
}
Add(For,16149570,147,224)
{
link(onEvent,11199240:doEvent1,[])
link(onStop,16280388:doEvent1,[])
link(End,1966354:EndIdx,[(160,198)(229,198)(229,250)(314,250)])
}
Add(Hub,11199240,238,224)
{
link(onEvent1,1966354:doSelect,[])
link(onEvent2,1966354:doEnsureVisible,[(270,237)(270,223)])
}
Add(Hub,7186066,98,203)
{
OutCount=3
link(onEvent1,8693979:doStart,[(123,209)(123,97)])
link(onEvent2,14244392:doData,[])
link(onEvent3,16149570:doFor,[(130,223)(130,230)])
}
Add(HubEx,5839741,273,98)
{
link(onEvent,10105924:doCaption,[])
}
Add(HubEx,15643894,553,273)
{
link(onEvent,8307403:doExec,[])
}
Add(DoData,14244392,511,210)
{
Data=String(BEGIN )
link(onEventData,15643894:doWork1,[(557,216)])
}
Add(Hub,16280388,189,231)
{
link(onEvent1,633462:doData,[(213,237)(213,328)])
link(onEvent2,8693979:doStop,[(221,244)(221,104)])
}
Add(DoData,633462,511,322)
{
Data=String(END;)
link(onEventData,15643894:doWork3,[(557,328)])
}
Add(SearchInFile,9357173,343,273)
{
link(onNotSearch,14386472:doCompare,[])
}
Add(If_else,14386472,392,273)
{
Type=5
Op1=String()
link(onTrue,13871707:doCopy,[])
}
Add(Copy,13871707,441,273)
{
Position=1
Count=60
link(onCopy,12304374:doString,[])
}
Повторный запуск последней схемы - дубли есть у всех строк - 2.7 сек.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Редактировалось 9 раз(а), последний 2018-03-04 12:01:14