Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26151
Рейтинг: 2127
#16: 2015-03-29 14:47:45 ЛС | профиль | цитата
Tad писал(а):
если слить воду

И все равно остается цикл while
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#17: 2015-03-29 14:52:42 ЛС | профиль | цитата
Так и s:=Copy(str,1,20) вроде тоже цикл, а не фотография.
(For i:=1 to 20 do s:=s+str[i];)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#18: 2015-03-29 15:02:48 ЛС | профиль | цитата
Tad писал(а):
Так и s:=Copy(str,1,20) вроде тоже цикл, а не фотография.

Да, все правильно, но сам алгоритм имеет возможность отказаться от цикла
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#19: 2015-03-29 15:19:17 ЛС | профиль | цитата
Ты это имеешь ввиду ?
Procedure THiAsmClass.doString;
var str:string;
begin
str:= toStringEvent(strIN)+;
SetLength(str,20);
_hi_OnEvent(onString,str );
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#20: 2015-03-29 15:22:15 ЛС | профиль | цитата
Tad писал(а):
Ты это имеешь ввиду ?

Да, почти. Или вот так

code_35401.txt

Я просто исключил фиксированную привязку. Длина зависит от форматной строки. Для данного случая, добавление и обрезка -- самый быстрый алгоритм


карма: 22

0
файлы: 1code_35401.txt [1.2KB] [443]
Ответов: 8926
Рейтинг: 823
#21: 2015-03-29 15:25:55 ЛС | профиль | цитата
Леонид писал(а):
..что и добавить нечего..
А всё добавляют и добавляют, и нет предела совершенству!
карма: 19

0
Ответов: 2059
Рейтинг: 132
#22: 2015-03-29 15:59:09 ЛС | профиль | цитата
добавление и обрезка -- самый быстрый алгоритм


НЕ совсем так.
"Добавление" быстрее, чем "добавление и обрезка" даже по количеству слов , а ещё + "вычисление сколько".
Просто всё размазано по функциям по этому не очевидно.
Допустим плюсуем 20 к 10, а потом обрезаем до 15 - цикл 20 итераций, потом обрезаем. Или заполняем 5 до недостающего - цикл 5 итераций. тут обрезание и установка общей длины, собственно одно и тоже, поэтому в расчёт не берётся.
И нет вычислений сколько обрезать или добавить, пусть даже скрытых.
Лучше считать по количеству исполняемых ассемблерных команд, а не команд в листинге.
карма: 6

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#23: 2015-03-29 17:08:34 ЛС | профиль | цитата
flint2 писал(а):
собственно одно и тоже, поэтому в расчёт не берётся.

Ага, только ты не забывай, что при каждом добавлении одного символа выделяется дополнительная память под новую длину строки, а это довольно медленная операция. В алгоритме с обрезкой память выделяется только один раз -- при суммировании строк
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#24: 2015-03-29 17:39:03 ЛС | профиль | цитата
Кончайте спорить. Скорость примерно одинакова.
code_35403.txt
У меня меньше в ~2 раза только за счет того, что я задал пустышку (вернее строку точек) в теле IC.
По идее и читается с верхних точек и выводится результат в режиме телетайпа ( всё в циклах).
Ничего в компе не происходит одновременно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_35403.txt [5.2KB] [238]
Разработчик
Ответов: 26151
Рейтинг: 2127
#25: 2015-03-29 17:50:35 ЛС | профиль | цитата
Tad писал(а):
Скорость примерно одинакова

У тебя скорость выше. А вот я совсем упустил, что чтение точек использует интерфейсные телодвижения и отнимают ненужное время. Но сам алгоритм работает быстрее чуть ли не в два с половиной раза в сравнении с циклическим добавлением
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2015-03-29 17:52:57 ЛС | профиль | цитата
В тестовой схеме у всех добавляются точки.
Интересно, какое время покажет у Леонида (Win7 64)?

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8926
Рейтинг: 823
#27: 2015-03-29 18:36:23 ЛС | профиль | цитата
flint2 -- 720
Tad -- 320
nesco -- 851
карма: 19

1
Голосовали:Tad
Разработчик
Ответов: 26151
Рейтинг: 2127
#28: 2015-03-29 18:42:36 ЛС | профиль | цитата
Tad писал(а):
В тестовой схеме у всех добавляются точки.

Ты че, издеваешься У тебя в схеме читается только одна точка, а у меня две.
Короче, пора заканчивать спор. Если в схеме flint2-а выкинуть вторую точку и применить константу внутри кода, то скорости твоей и его схемы будут почти одинаковы. Но схема с обрезкой мне нравится больше
карма: 22

0
Ответов: 2059
Рейтинг: 132
#29: 2015-03-29 18:56:04 ЛС | профиль | цитата
Tad
Кончайте спорить. Скорость примерно одинакова.

nesco
Короче, пора заканчивать спор.

Это точно. ... и не имеет смысла.
карма: 6

0
Ответов: 16884
Рейтинг: 1239
#30: 2015-03-29 19:15:25 ЛС | профиль | цитата
nesco писал(а):
Ты че, издеваешься
Просто не понял о каких точках ты говорил. Ты про верхние "Дата", а я про добавляемые строки из точек.
flint2 писал(а):
не имеет смысла
но, на всякий случай, решил соорудить компонент
[url]http://forum.d2h.ru//getfile/35405 [/url]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)