Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.10;
Скачать: CL | DM;

Вниз

Вопрос о неоднородности скорости работы цикла   Найти похожие ветки 

 
R   (2003-02-27 09:34) [0]

Мастера вопрос такого плана есть цикл
For I:=0 To N Do begin
------
Sum:=Sum+StrToFloat(Memo1.Lines[I]);
Application.ProcessMessages
end;
Так вот вопрос я заметил что скорость выполнения цикла снижается при приближении к N/2 т.е. к середине цикла а затем от середины
до конца цикла снова возрастает. Почему это происходит ведь
команды находящиеся в теле цикла не меняются. И выполнение должно идти равномерно.


 
Digitman ©   (2003-02-27 09:52) [1]

Скорей всего, это связано с логикой работы метода, который вызывается при обращении к св-ву Memo1.Lines[]


 
REA ©   (2003-02-27 10:22) [2]

Если ты хочешь добиться скорости от вычислений, нужно убрать обработку сообщений из цикла.


 
Anatoly Podgoretsky ©   (2003-02-27 10:25) [3]

Не надо убирать, это практически не увеличивает время, правда и нужды в нем тоже нет, поскольку операция проходит практически сгновенно (Win9х/TMemo)


 
han_malign ©   (2003-02-27 10:43) [4]

Cамая длительная операция в цикле StrToFloat и его время выполнения сильно зависит от значения...


 
REA ©   (2003-02-27 10:47) [5]

Я почему то использую TextToFloat(p, e, fvExtended). Наверно быстрее.


 
han_malign ©   (2003-02-27 11:37) [6]

2 REA © (27.02.03 10:47)
SysUtils:
function StrToFloat(const S: string): Extended;
begin
if not TextToFloat(PChar(S), Result, fvExtended) then
ConvertErrorFmt(@SInvalidFloat, [S]);
end;

- реализацию TextToFloat можно посмотреть в ffmt.asm, мне разбираться влом...


 
Dms   (2003-02-27 11:41) [7]

Скорее всего, свойство .Lines[i] вызывает метод, в котором реализован какой-то тип поиска ... Возможно поиск идет с концов к середине, поэтому скорость и понижается.


 
R   (2003-02-28 01:52) [8]

Спасибо за ответы.



Страницы: 1 вся ветка

Текущий архив: 2003.03.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-30061
Альф
2003-02-21 10:30
2003.03.10
Автоматизм при наборе кода :)


6-30002
Programist21
2003-01-19 18:31
2003.03.10
Текст из TWebBrowser в файл?


14-30092
чайник1
2003-02-19 17:27
2003.03.10
Обмен сообщениями в сети


3-29743
vega777
2003-02-19 14:34
2003.03.10
Запортилась таблица


7-30144
Dor
2003-01-08 19:37
2003.03.10
Как узнать сколько памяти занято и сколько свободно???Очень надо