Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#16: 2018-03-01 15:49:21 ЛС | профиль | цитата
miver писал(а):
Если памяти навалом то сделает очень быстро
«Тени исчезают в полдень», Андрон писал(а):
Сомневаюсь я однако....
и
miver писал(а):
Если памяти навалом
здесь совершенно ни при чём. Играет роль только наличие места на диске.
Результирующий файл займёт на диске ~ в 2 раза больше места.
Думаю, что обработка
Rysik писал(а):
Есть порядка 300 файлов .... суммарный вес файлов ~40 ГБ
и
Rysik писал(а):
срезать строки длинной более скажем 63 символов, пустые строки удалить
займёт очень МНОГО времени.
И не в минутах, а в часах и сутках.

Редактировалось 2 раз(а), последний 2018-03-01 15:58:50
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 16884
Рейтинг: 1239
#17: 2018-03-01 18:33:06 ЛС | профиль | цитата
Блин!
miver, извини, не увидел :memory:

Забыл сказать: твой пример
miver писал(а):
Вот выбор уникальных строк
заткнётся на первом же дубле.
Нужно или
CREATE TABLE hashtub([hash] TEXT UNIQUE ON CONFLICT IGNORE);
или
BEGIN TRANSACTION ON CONFLICT IGNORE;
или
INSERT OR IGNORE INTO hashtub values('%1');

Редактировалось 4 раз(а), последний 2018-03-02 09:08:29
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8886
Рейтинг: 823
#18: 2018-03-01 21:16:51 ЛС | профиль | цитата
Леонид писал(а):
..надо попробовать, сколько влезет в StrList..

На моём компьютере с 8 Гб памяти и Win-7 в StrList можно построчно грузить до 6000000 строк по ~100 символов каждая и работать с ними. А вот сохранить файлом не получается, выдаёт ошибку и закрывается. Сохраняет в файл 4000000 строк по ~100 символов каждая, файл получается 469 Мб. С диска загружается в StrList за 1.3 секунды.
Проверять на поиск совпадающих строк не буду, время жалко
карма: 19

0
Ответов: 8886
Рейтинг: 823
#19: 2018-03-02 22:17:26 ЛС | профиль | цитата
Леонид писал(а):
Проверять на поиск совпадающих строк не буду
Не выдержала душа поэта ("Зарекалась хрюшка в грязи не валяться!")
20Kvs50K.jpg
За чуть более 10 мин МИЛЛИАРД сравнений строк. Tad конечно прав
карма: 19

0
Ответов: 758
Рейтинг: 112
#20: 2018-03-03 12:36:32 ЛС | профиль | цитата
Леонид, Ради интереса! Выложите схемку. Я допилю через БД и сравним
карма: 1

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#21: 2018-03-03 12:44:38 ЛС | профиль | цитата
Возможно что ошибка была уже при создании этих "огромных" файлов, если бы в общей БД хранились hash'ы всех строк, то не надо было бы городить весь этот цирк. Просто перед записью новой строки проверять её наличие в таблице и принимать решение о добавлении в файл. но автору виднее однако - создаём себе трудности и героически их преодолеваем (чужими руками).
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 8886
Рейтинг: 823
#22: 2018-03-03 14:17:42 ЛС | профиль | цитата
miver, так Project1, я его и не хранил
Вот, сделал по новой по картинке:
Project1


Add(MainForm,2953706,588,301)
{
}
Add(ListBox,1966354,301,91)
{
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,350,98)
{
Str1="C:\Users\LA\Documents\"
link(onStrCat,6545833:doValue,[])
}
Add(MemFifo,6545833,392,98)
{
link(onData,15391033:doString,[])
}
Add(FormatStr,15391033,448,98)
{
link(onFString,16460589:doText,[])
link(Str1,1438867:Var3,[(454,89)(440,89)(440,145)])
link(Str2,8885844:Var1,[(461,82)(433,82)])
}
Add(Edit,16460589,497,98)
{
Left=5
Top=5
Width=380
}
Add(Button,9617827,231,203)
{
Left=105
Top=60
link(onClick,14083436:doEvent1,[])
}
Add(ProgressBar,13857139,441,322)
{
Left=100
Top=100
Width=280
Height=15
Color=32768
ProgressColor=65280
}
Add(StrList,7122459,371,161)
{
link(FileName,1438867:Var1,[(384,145)])
}
Add(StrList,12071239,420,161)
{
link(FileName,8885844:Var2,[])
}
Add(GetDataEx,1438867,392,140)
{
link(Data,6545833:Value1,[])
}
Add(GetDataEx,8885844,427,133)
{
Angle=3
link(Data,6545833:Value2,[(405,138)])
}
Add(Hub,14083436,280,203)
{
OutCount=5
link(onEvent1,7122459:doLoad,[(305,209)(305,195)])
link(onEvent2,12071239:doLoad,[(410,216)(410,195)])
link(onEvent3,8589913:doReset,[(530,223)(530,258)])
link(onEvent4,8693979:doStart,[(305,230)(305,300)])
link(onEvent5,3833996:doEnum,[(375,237)(375,244)])
}
Add(ArrayEnum,3833996,385,238)
{
link(onItem,9463392:doEnum,[])
link(onEndEnum,8693979:doStop,[(424,251)(424,307)])
link(Array,7122459:Array,[])
}
Add(ArrayEnum,9463392,434,238)
{
link(onItem,6556294:doCompare,[])
link(onEndEnum,1857111:doCalc,[(473,251)(473,293)(375,293)(375,328)])
link(Array,12071239:Array,[])
}
Add(If_else,6556294,490,238)
{
link(onTrue,8589913:doNext,[])
link(Op1,3833996:Item,[(496,229)(482,229)(482,278)(391,278)])
}
Add(Counter,8589913,539,238)
{
Max=999999999
}
Add(TimeCounter,8693979,490,294)
{
link(onStop,15678087:doString,[])
}
Add(MathParse,1857111,385,322)
{
MathStr="%2/%1*100"
link(onResult,13857139:doPosition,[])
link(X1,7122459:Count,[(391,285)(384,285)])
link(X2,3833996:Index,[])
}
Add(FormatStr,15678087,539,301)
{
Mask="Найдено %1 совпадений за %2 мсек"
link(onFString,2953706:doCaption,[])
link(Str1,8589913:Count,[])
}

А это хранимый генератор случайного текста (количество строк до 4000000 устанавливается) для пробы:
Случ. текст


Add(MainForm,2953706,77,112)
{
Width=544
link(onCreate,11085202:doWork1,[(116,132)(116,118)])
}
Add(Memo,9328239,175,98)
{
Left=5
Top=30
Width=520
Height=230
Align=5
ScrollBars=2
}
Add(ChildPanel,11085202,126,112)
{
link(onEvent1,2953706:doCaption,[(165,118)(165,104)(67,104)(67,118)])
link(onEvent2,9328239:doText,[])
}
BEGIN_SDK
Add(EditMulti,7878121,21,21)
{
EventCount=2
WorkCount=1
Width=440
Height=270
link(doWork1,12297484:doEvent1,[(46,27)(46,97)])
}
Add(Panel,13137533,56,35)
{
Width=530
Height=30
Align=2
}
Add(Button,294400,42,126)
{
Left=15
Top=5
Caption="New"
link(onClick,12836985:doEvent1,[])
}
Add(Button,16443704,42,189)
{
Left=460
Top=5
Caption="Save"
link(onClick,15140639:doEvent1,[])
}
Add(Edit,10340021,217,35)
{
Left=185
Top=5
Width=90
Text="20000"
DataType=2
}
Add(Label,13731098,168,35)
{
Left=125
Top=7
Width=61
Height=17
Caption="Кол. строк"
}
Add(Button,11871194,238,175)
{
Left=370
Top=5
Caption="View"
link(onClick,1896552:doData,[])
}
Add(LED,11063149,301,49)
{
Left=80
Top=5
Width=20
Height=20
ColorOff=65280
}
Add(Hub,12297484,91,91)
{
OutCount=4
link(onEvent1,3301899:doWork2,[(116,97)(116,83)])
link(onEvent2,3210884:doWork1,[])
link(onEvent3,3789266:doWork1,[(116,111)])
link(onEvent4,14611930:doWork2,[])
}
Add(MultiElement,3210884,217,98)
{
link(onEvent1,2339098:doAdd,[])
link(onEvent2,343437:doEvent1,[])
link(Data1,13711752:Var2,[])
}
BEGIN_SDK
Add(EditMulti,90280,28,21)
{
EventCount=2
WorkCount=2
DataCount=1
Width=440
Height=158
VOffset=7
HOffset=28
link(doWork1,15240120:doEvent1,[])
link(doWork2,15286128:doFor,[(39,41)(39,55)])
}
Add(For,15286128,49,49)
{
@Hint=#18:Количество абзацев|
IncludeEnd=1
link(onEvent,9486001:doRandom,[])
link(onStop,90280:onEvent2,[(88,62)(88,140)(455,140)(455,41)])
link(End,90280:Data1,[])
}
Add(For,11842154,154,49)
{
@Hint=#29:Количество слов в предложении|
link(onEvent,5410569:doText,[])
link(onStop,15892992:doEvent1,[(193,62)(193,97)])
link(End,9486001:Random,[(167,40)(146,40)(146,89)(111,89)])
}
Add(Random,9486001,105,49)
{
Min=7
Max=15
link(onRandom,11842154:doFor,[])
}
Add(InlineCode,5410569,203,42)
{
WorkPoints=#7:doStart|6:doText|
EventPoints=#5:onRes|
VarPoints=#
DataPoints=#
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onRes : THI_Event;|5: |52: procedure doStart(var _Data:TData; Index:Word); |50: procedure doText(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|6: begin|12: Randomize;|5: end;|0:|29:procedure THiAsmClass.doText;|15:var sss:string;|16: i,j:integer;|16: _Rnd:double;|5:BEGIN|11: sss:=' ';|24: j:=round(Random*12)+2;|19: for i:=0 to j do|9: begin|18: _Rnd:=Random;|42: if _Rnd<0.0003 then sss:=sss+'ё' else|42: if _Rnd<0.0007 then sss:=sss+'ъ' else|42: if _Rnd<0.0033 then sss:=sss+'ф' else|42: if _Rnd<0.0065 then sss:=sss+'э' else|42: if _Rnd<0.0101 then sss:=sss+'щ' else|42: if _Rnd<0.0149 then sss:=sss+'ц' else|42: if _Rnd<0.0213 then sss:=sss+'ю' else|42: if _Rnd<0.0286 then sss:=sss+'ш' else|41: if _Rnd<0.038 then sss:=sss+'ж' else|42: if _Rnd<0.0477 then sss:=sss+'х' else|42: if _Rnd<0.0598 then sss:=sss+'й' else|42: if _Rnd<0.0742 then sss:=sss+'ч' else|42: if _Rnd<0.0901 then sss:=sss+'б' else|42: if _Rnd<0.1066 then sss:=sss+'з' else|42: if _Rnd<0.1236 then sss:=sss+'г' else|41: if _Rnd<0.141 then sss:=sss+'ь' else|40: if _Rnd<0.16 then sss:=sss+'ы' else|42: if _Rnd<0.1801 then sss:=sss+'я' else|42: if _Rnd<0.2063 then sss:=sss+'у' else|42: if _Rnd<0.2344 then sss:=sss+'п' else|42: if _Rnd<0.2642 then sss:=sss+'д' else|42: if _Rnd<0.2963 then sss:=sss+'м' else|42: if _Rnd<0.3312 then sss:=sss+'к' else|42: if _Rnd<0.3752 then sss:=sss+'л' else|42: if _Rnd<0.4206 then sss:=sss+'в' else|42: if _Rnd<0.4679 then sss:=sss+'р' else|42: if _Rnd<0.5226 then sss:=sss+'с' else|42: if _Rnd<0.5852 then sss:=sss+'т' else|42: if _Rnd<0.6522 then sss:=sss+'н' else|42: if _Rnd<0.7257 then sss:=sss+'и' else|42: if _Rnd<0.8058 then sss:=sss+'а' else|42: if _Rnd<0.8903 then sss:=sss+'е' else|34: if _Rnd<1 then sss:=sss+'о'; |9: end;|25: _hi_onEvent(onRes,sss);|4:END;|0:|0:|4:end.|
link(onRes,15879034:doWork2,[])
}
Add(StrCat,13455235,308,42)
{
Point(doClear)
link(Str1,7063167:Var3,[(314,33)(328,33)(328,82)])
}
Add(Hub,15240120,70,28)
{
link(onEvent1,5410569:doStart,[(193,34)(193,48)])
link(onEvent2,9486001:doRandomize,[(95,41)(95,62)])
}
Add(DoData,7170534,308,98)
{
link(onEventData,16600547:doTrim,[])
link(Data,7063167:Var2,[])
}
Add(GetDataEx,7063167,308,77)
{
link(Data,13455235:Result,[])
}
Add(Hub,15892992,203,91)
{
OutCount=3
link(onEvent1,7526937:doData,[(242,97)(242,62)])
link(onEvent2,7170534:doData,[])
link(onEvent3,13455235:doClear,[(298,111)(298,55)])
}
Add(DoData,7526937,252,56)
{
Data=String(. )
link(onEventData,15879034:doWork3,[(291,62)])
}
Add(HubEx,15879034,287,42)
{
link(onEvent,13455235:doStrCat,[])
}
Add(StrCase,14266070,406,98)
{
Type=3
link(onModify,90280:onEvent1,[(445,104)(445,34)])
}
Add(Trim,16600547,357,98)
{
Char=" "
Mode=4
link(onTrim,14266070:doModify,[])
}
END_SDK
Add(Hub,12836985,91,126)
{
OutCount=3
link(onEvent1,3301899:doWork3,[(123,132)])
link(onEvent2,3789266:doWork2,[])
link(onEvent3,14611930:doWork3,[(130,146)])
}
Add(HubEx,3301899,119,77)
{
link(onEvent,16463242:doEvent1,[])
}
Add(StrList,2339098,301,98)
{
}
Add(DoData,1896552,301,175)
{
link(onEventData,7878121:onEvent2,[(360,181)(360,34)])
link(Data,633127:Var2,[])
}
Add(SDialog,3850500,217,133)
{
Filter="TXT|*.txt"
Point(doFileName)
link(onExecute,2339098:doSave,[])
}
Add(TimeCounter,526452,350,217)
{
link(onStop,10660108:doString,[])
}
Add(Length,4653976,294,224)
{
link(onLength,526452:doStop,[])
link(Str,633127:Var1,[(300,166)])
}
Add(FormatStr,10660108,399,224)
{
DataCount=3
Mask="Сгенерировано %1 символов в %3 строках за %2 мсек"
link(onFString,7878121:onEvent1,[(443,230)(443,27)])
link(Str1,4653976:Result,[(405,215)(391,215)(391,264)(300,264)])
link(Str3,2339098:Count,[(419,159)(314,159)])
}
Add(GetDataEx,633127,301,161)
{
link(Data,2339098:Text,[])
}
Add(HubEx,3789266,112,133)
{
Angle=1
link(onEvent,526452:doStart,[(116,223)])
}
Add(HubEx,14611930,126,112)
{
Angle=3
link(onEvent,3646847:doStart,[(130,111)])
}
Add(Hub,16463242,238,77)
{
link(onEvent1,11063149:doOn,[(291,83)(291,69)])
link(onEvent2,2339098:doClear,[(291,90)(291,111)])
}
Add(Hub,343437,259,105)
{
link(onEvent1,11063149:doOff,[(284,111)(284,62)])
link(onEvent2,4653976:doLength,[(284,118)(284,230)])
}
Add(Thread,3646847,161,105)
{
Delay=20
FastStop=0
link(onExec,3210884:doWork2,[])
}
Add(Hub,15140639,91,189)
{
link(onEvent1,7492483:doOperation,[])
link(onEvent2,3850500:doExecute,[(123,202)(123,181)(200,181)(200,139)])
}
Add(Math,7492483,133,189)
{
OpType=3
Op2=1000
ResultType=0
link(onResult,3543045:doStrCat,[])
link(Op1,13711752:Var1,[(139,75)])
}
Add(GetDataEx,13711752,217,70)
{
link(Data,10340021:Text,[])
}
Add(StrCat,3543045,175,189)
{
Str2="Кстр.txt"
link(onStrCat,3850500:doFileName,[(214,195)(214,181)(207,181)(207,146)])
}
END_SDK

карма: 19

0
Ответов: 16884
Рейтинг: 1239
#23: 2018-03-03 19:30:24 ЛС | профиль | цитата
Леонид, я балдею. Если честно, то практических телодвижений от Вас! даже не ожидал.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8886
Рейтинг: 823
#24: 2018-03-03 20:03:16 ЛС | профиль | цитата
Tad, но ТС-то свой человек, сюда пришёл младохакером, а видите исправился, человеком стал, программистом! Да и я всегда имел склонность к измерению пип.., ой, времени и быстродействия (не при Galkov-е будь сказано!)
карма: 19

0
Ответов: 758
Рейтинг: 112
#25: 2018-03-03 23:52:25 ЛС | профиль | цитата
Леонид, Проверьте на тех же файлах
Add(MainForm,2953706,420,420)
{
Point(onClose)
link(onCreate,14931663:doOpen,[])
link(onClose,14931663:doClose,[])
}
Add(ListBox,1966354,238,140)
{
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,287,147)
{
link(onStrCat,6545833:doValue,[])
link(Str1,133349:CurrentDir,[])
}
Add(MemFifo,6545833,329,147)
{
link(onData,15391033:doString,[])
}
Add(FormatStr,15391033,385,147)
{
link(onFString,16460589:doText,[])
link(Str1,1438867:Var3,[(391,138)(377,138)(377,194)])
link(Str2,8885844:Var1,[(398,131)(370,131)])
}
Add(Edit,16460589,434,147)
{
Left=5
Top=5
Width=380
}
Add(Button,9617827,91,238)
{
Left=105
Top=60
link(onClick,14083436:doEvent1,[])
}
Add(StrList,7122459,196,210)
{
link(FileName,1438867:Var1,[(209,194)])
}
Add(StrList,12071239,357,224)
{
link(FileName,8885844:Var2,[])
}
Add(GetDataEx,1438867,329,189)
{
link(Data,6545833:Value1,[])
}
Add(GetDataEx,8885844,364,182)
{
Angle=3
link(Data,6545833:Value2,[(342,187)])
}
Add(Hub,14083436,140,238)
{
OutCount=8
link(onEvent1,7122459:doLoad,[])
link(onEvent3,12071239:doLoad,[])
link(onEvent4,8693979:doStart,[(186,265)(186,419)])
link(onEvent5,3833996:doEnum,[])
link(onEvent6,7508669:doEnum,[(200,279)(200,307)])
link(onEvent7,13045864:doQuery,[(193,286)(193,370)])
link(onEvent8,8693979:doStop,[(179,293)(179,426)])
}
Add(ArrayEnum,3833996,210,266)
{
link(onItem,6489984:doString,[])
link(Array,7122459:Array,[])
}
Add(TimeCounter,8693979,322,413)
{
link(onStop,15678087:doString,[])
}
Add(FormatStr,15678087,371,420)
{
Mask="Найдено %1 совпадений за %2 мсек"
link(onFString,2953706:doCaption,[])
link(Str1,16717458:Value,[])
}
Add(Dir,133349,287,98)
{
}
Add(DS_SQLite,14931663,469,434)
{
@Color=5635925
Name="DB"
FileName=":memory:"
link(onOpen,9656551:doExec,[])
}
Add(DSC_Exec,9656551,525,434)
{
@Color=5635925
SQL="CREATE TABLE hashtub([hash] TEXT);"
DSManager="DB"
}
Add(DSC_Exec,733540,308,266)
{
@Color=5635925
DSManager="DB"
}
Add(FormatStr,6489984,259,266)
{
DataCount=1
Mask="INSERT INTO hashtub values('%1');"
link(onFString,733540:doExec,[])
}
Add(ArrayEnum,7508669,371,301)
{
link(onItem,12304374:doString,[])
link(Array,12071239:Array,[])
}
Add(DSC_Exec,8307403,469,301)
{
@Color=5635925
DSManager="DB"
}
Add(FormatStr,12304374,420,301)
{
DataCount=1
Mask="INSERT INTO hashtub values('%1');"
link(onFString,8307403:doExec,[])
}
Add(Memory,16717458,371,364)
{
}
Add(DSC_Query,13045864,322,364)
{
@Color=5635925
SQL="SELECT count(*) FROM (SELECT `hash` FROM `hashtub` GROUP BY 1 HAVING count(*)>1);"
DSManager="DB"
link(onQuery,16717458:doValue,[])
}

Редактировалось 1 раз(а), последний 2018-03-03 23:53:04
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#26: 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 сек.

Редактировалось 9 раз(а), последний 2018-03-04 12:01:14
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8886
Рейтинг: 823
#27: 2018-03-04 12:01:33 ЛС | профиль | цитата
Схема miver-а:
20000х50000 строк 10^9 сравнений -- 2.55 сек
100000х200000 строк 2*10^10 сравнений -- 203 сек
1000000х2000000 строк 2*10^12 сравнений -- 143 сек, строк больше в сто раз, а время даже меньше Проверил добавлением одинаковой строки в начало или в окончание файла, находит, блин, а со скоростью непонятно
Схема Tad-а:
20000х50000 строк 10^9 сравнений -- 1.7 сек
50000х100000 строк 5*10^9 сравнений -- 732 сек
100000х200000 строк 2*10^10 сравнений -- 1965 сек
Непонятная для меня зависимость времени выполнения от количества строк в обеих схемах
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#28: 2018-03-04 12:04:18 ЛС | профиль | цитата
Леонид,
1. мои данные по последней схеме?
2. У меня результат на диске !
3. Размер памяти не имеет значения. Лишь бы строка влезла.
4. Исходный txt-файл любого размера.

Редактировалось 3 раз(а), последний 2018-03-04 12:25:58
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 43
Рейтинг: -2
#29: 2018-03-04 13:41:29 ЛС | профиль | цитата
Леонид, Tad, ну сколько можно читать эту блевотину. Понятно что Вам на пенсии не чем заняться но не настолько же. Вроде как Nic вразумил тему но Вы упёртые до сих пор меряетесь пиписьками с малолеткой который по сути для HiAsm ни чего и не сделал. Не знаю ка для Вас а для меня это ФУ, ФУ, ФУ, ...(жаль что смайлика с блевотиной нет)
карма: -2

0
Ответов: 16884
Рейтинг: 1239
#30: 2018-03-04 15:01:18 ЛС | профиль | цитата
Rysik,
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1Txt2Db.rar [1.4KB] [434]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)