Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#16: 2007-06-19 16:16:07 ЛС | профиль | цитата
Владд писал(а):
Вот теоретически работает..Но ошибка об нехватки памяти выскакивает..

Dilma, это уже начинает переходить разумные границы
Второй "кольцеватель" за день
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#17: 2007-06-19 16:30:40 ЛС | профиль | цитата
nesco, см. пятое сообщение этой темы:
Владд писал(а):
Тормозит именно на обработке замены


ну положим не заметил ладно...

nesco писал(а):
Вот похоже, это и тормозит -- именно компонент Replace

опять таки вопрос:
Dilma писал(а):
а есть уверенность в наличие полного представления о происходящем в приденном примере, чтобы так лихо сравнивать производительность с чем-то


Тормозит не replace. Тормозит то, из-за чего последователи стандартного Delphi пакета остануться рано или поздно у разбитого корыта. В представленной схеме достаточно много операций копирования. При строках в 3мб и больше это становится накладной операцией. StrList - шла речь про загрузку по doText, а не из файла, поэтому приведенная цитата отношения к делу никакого не имеет. А doText в отличие от doLoad производит парсинг строки и создание динамического массива в памяти, что опять таки при больших строках очень накладная операция. И наконец если в этих 3мб строки, разделенные
достаточно малы, то цикл перебора ArrayEnum так же будет выполняться сам по себе достаточно долго из-за громоздкого интерфейса работы с массивами.

Поэтому пытаться оптимизировать схему по скорости работы в данном случае бессмыслено.

[size=-2]------ Добавлено в 16:30
Galkov писал(а):
это уже начинает переходить разумные границы

начинает переходить разумные границы количество примеров, натыкающиеся на ограничения пакета... Во всяком случае тут неоднозначного мнения в отличие от кольцевания быть не может...
карма: 27
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#18: 2007-06-19 17:13:25 ЛС | профиль | цитата
Dilma, все это понятно. Понятно и ограничение пакета по рекурсиям, и громозкость операций. Но что делать с тем, что уже сделано? Если я сейчас займусь изучением нового пакета, буду пытаться на нем что-нибудь состряпать (со временем может и получится), что делать с поддержкой тех компонентов, которые уже сделаны? Я даже не знаю что делать, но оставаться у разбитого корыта мне не хочется. Это офтоп, но по ходу дела. Можешь спокойно удалить.
карма: 22

0
Ответов: 2058
Рейтинг: 28
#19: 2007-06-19 17:26:25 ЛС | профиль | цитата
nesco, надо немного передохнуть и потом сам поймешь что тебе делать.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#20: 2007-06-19 17:40:32 правка | ЛС | профиль | цитата


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

0
Ответов: 2125
Рейтинг: 159
#21: 2007-06-19 17:43:59 ЛС | профиль | цитата
guest писал(а):
tsdima писал(а):
Stream × ÒÕËÉ - É Ó ÐÅÓÔÎÅÊ

Хм..подумаю над этим..

Да, над этим действительно стоит подумать
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#22: 2007-06-19 18:07:47 ЛС | профиль | цитата
nesco писал(а):
Но что делать с тем, что уже сделано?

встречный вопрос: зачем с этим что-то делать? Нужно это просто расценивать как некий опыт, помогающий сделать следующий шаг более качественным, устранить ошибки предыдущей реализации и учесть как можно больше пожеланий в новой.

Владд писал(а):
Мне нужно просто,чтоб выдавало строки по очереди,неважно насколько сложно,главно чтоб быстрее,Чем через замену..

на стандартных элементах палитры этого достигнуть врятли получится. Только InlineCode.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#23: 2007-06-19 18:15:51 правка | ЛС | профиль | цитата


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

0
Администрация
Ответов: 15295
Рейтинг: 1519
#24: 2007-06-20 10:32:40 ЛС | профиль | цитата
неужели это быстрее работает фантастика...
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#25: 2007-06-20 12:18:41 правка | ЛС | профиль | цитата


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

0
Ответов: 499
Рейтинг: 1
#26: 2007-08-02 21:17:51 ЛС | профиль | цитата
я недавно тоже столкнулся. но сначала я отконвертировал файл, а потом его в StrList грузил. примерно вот так:
Add(Console,5753902,28,154)
{
Title="unix2dos"
link(onStart,3875011:doStart,[])
}
Add(FileStream,3108897,203,154)
{
FileName="unix"
}
Add(Hub,4299685,140,154)
{
OutCount=3
link(onEvent1,3108897:doOpen,[])
link(onEvent2,8852071:doCopy,[(182,167)(182,251)])
link(onEvent3,3108897:doClose,[(191,174)(191,167)])
}
Add(DataToFile,476682,357,245)
{
link(onGet,3772007:doCompare,[])
link(Stream,12741365:Var2,[])
}
Add(For,1938234,301,245)
{
IncludeEnd=1
link(onEvent,476682:doGet,[(348,251)(348,258)])
link(onStop,14966107:doEvent1,[(341,258)(341,293)])
link(End,15523919:Var3,[(314,205)])
}
Add(StrList,6032640,644,385)
{
FileName="dos"
}
Add(DataToFile,13023719,595,238)
{
link(Stream,9476324:Var1,[(601,219)])
}
Add(If_else,3772007,406,245)
{
Op2=Integer(10)
link(onTrue,4335324:doEvent1,[(446,251)(446,237)])
link(onFalse,1658584:doWork3,[(550,258)])
}
Add(Hub,4335324,455,231)
{
link(onEvent1,14527331:doData,[(495,237)(495,223)])
link(onEvent2,1658584:doWork2,[])
}
Add(DoData,14527331,504,217)
{
Data=Integer(13)
link(onEventData,1658584:doWork1,[(550,223)])
}
Add(HubEx,1658584,546,231)
{
link(onEvent,13023719:doPut,[])
}
Add(MemoryStream,4473835,651,154)
{
Point(doPosition)
}
Add(FileStream,7080374,595,287)
{
FileName="dos"
Mode=1
}
Add(GetDataEx,15523919,203,196)
{
link(Data,3108897:Size,[])
}
Add(StreamCopy,2765296,644,343)
{
link(Dest,7080374:Stream,[(650,331)(601,331)])
link(Source,9476324:Var2,[])
link(Count,4473835:Size,[])
}
Add(Hub,14966107,518,287)
{
OutCount=6
link(onEvent1,7080374:doOpen,[])
link(onEvent2,9464850:doData,[(566,300)(566,160)])
link(onEvent3,2765296:doCopy,[(577,307)(577,349)])
link(onEvent4,7080374:doClose,[(587,314)(587,300)])
link(onEvent5,6032640:doLoad,[(568,321)(568,419)])
link(onEvent6,3875011:doStop,[(560,328)(560,348)(75,348)(75,167)])
}
Add(DoData,7387525,301,154)
{
Data=Integer(0)
link(onEventData,14519559:doPosition,[(345,160)(345,174)])
}
Add(GetDataEx,9476324,644,210)
{
link(Data,4473835:Stream,[])
}
Add(TimeCounter,3875011,84,154)
{
link(onStart,4299685:doEvent1,[])
link(onStop,5753902:doWrite,[(124,167)(124,143)(16,143)(16,160)])
}
Add(StreamCopy,8852071,196,245)
{
link(Dest,12741365:Var1,[(202,219)])
link(Source,3108897:Stream,[])
link(Count,15523919:Var2,[])
link(onCopy,3004573:doEvent1,[])
}
Add(MemoryStream,14519559,357,154)
{
Point(doPosition)
}
Add(DoData,9464850,595,154)
{
Data=Integer(0)
link(onEventData,4473835:doPosition,[(639,160)(639,174)])
}
Add(GetDataEx,12741365,350,210)
{
link(Data,14519559:Stream,[])
}
Add(Hub,3004573,245,245)
{
link(onEvent1,7387525:doData,[(285,251)(285,160)])
link(onEvent2,1938234:doFor,[(292,258)(292,251)])
}
файл размером 10000000 байт (KOL book Кладова в html) отработал за 27 секунд.

[size=-2]------ Добавлено в 21:17
хех. если элемент If-else заменить на инлайн-код:
begin 
  x := ReadInteger(_Data, Data, 0);
if (x=10) then _Hi_OnEvent(onResult, 13);
_Hi_OnEvent(onResult, x);
end;
то тот же файл отрабатывается за 15 секунд.

а еще - это мои первые строки на паскале, чему я безмерно рад ;)
карма: 0

0
26
Сообщение
...
Прикрепленные файлы
(файлы не залиты)