Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#61: 2011-05-26 09:46:46 ЛС | профиль | цитата
1nd1g0 писал(а):
А ещё лучше узнать, что Вы можете сказать по коду компонента коллеги nesco (он сам спрашивал)?
Извини, но это только в личке или по Skype Кстати nesco, у тебя Skype есть ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#62: 2011-05-26 10:50:51 ЛС | профиль | цитата
[flood]Я не про обсуждение чьих-то кодерских способностей, я про то, что
nesco писал(а):
Ну и какие выводы или предложения?
вещал коллега nesco, если что-то у него нашли не оптимальное, почему бы не сообщить о своём варианте реализации ко всеобщей пользе [/flood]
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#63: 2011-05-26 12:47:41 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-21 04:08:31
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#64: 2011-05-26 12:48:30 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-21 04:08:31
карма: 0

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#65: 2011-05-26 21:10:34 ЛС | профиль | цитата
Tad писал(а):
Кстати nesco, у тебя Skype есть ?

Нету
------------ Дoбавленo в 12.49:
1nd1g0 писал(а):
почему бы не сообщить о своём варианте реализации ко всеобщей пользе

Пока все это не ушло дальше ракомендаций
------------ Дoбавленo в 21.10:
Короче, Tad, муйня все рекомендации -- однозначно с константами параметров работает быстрее. Вот, последний релиз, немного изменил алгоритм. В архиве есть тестовая схемка. Надо ее запустить и поклацать несколько раз, после второго запуска показывает практически одинаковые скорости парсинга -- multiblockfind_005.zip
карма: 22

0
файлы: 1multiblockfind_005.zip [9.8KB] [205]
Ответов: 16884
Рейтинг: 1239
#66: 2011-05-27 09:58:25 ЛС | профиль | цитата
nesco писал(а):
муйня
потому, что где-то, кто-то, установил WriteableConst=ON
Add(MainForm,2953706,98,147)
{
Width=441
Height=146
}
Add(InlineCode,708863,329,112)
{
WorkPoints=#5:doTad|7:doNesco|
EventPoints=#7:onTrim1|
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|21: onTrim1:THI_Event;|47: procedure doTad(var _Data:TData;Index:Word);|49: procedure doNesco(var _Data:TData;Index:Word);|5: end;|0:|14:implementation|35:function tad(Str : string): string;|3:var|13: L: integer;|5:begin|19: L := Length(Str);|46: while (L > 0) and (Str[L] <= ' ') do Dec(L);|20: SetLength(Str, L);|9: L := 1;|57: while (L <= Length(Str)) and (Str[L] <= ' ') do Inc(L);|53: Result := string(PChar(integer(@Str[1]) + L - 1)); |4:end;|0:|43:function nesco(const Str : string): string;|3:var|13: L: integer;|5:begin|14: Result:=Str;|22: L := Length(Result);|49: while (L > 0) and (Result[L] <= ' ') do Dec(L);|23: SetLength(Result, L);|9: L := 1;|63: while (L <= Length(Result)) and (Result[L] <= ' ') do Inc(L);|56: Result := string(PChar(integer(@Result[1]) + L - 1)); |4:end;|0:|29: procedure THiAsmClass.doTad;|6: BEGIN|150: _hi_onEvent(onTrim1,tad(' Пробная строка '));|5: END;|0:|31: procedure THiAsmClass.doNesco;|6: BEGIN|152: _hi_onEvent(onTrim1,nesco(' Пробная строка '));|5: END;|4:end.|
link(onTrim1,12170476:doText,[])
}
Add(Label,12170476,399,112)
{
Left=105
Top=55
}
Add(Button,9970309,98,98)
{
Left=30
Top=55
Caption="Test"
link(onClick,6967569:doEvent1,[])
}
Add(Label,8545957,399,49)
{
Left=330
Top=55
Width=4
Height=4
Caption=""
Alignment=1
}
Add(Label,10677244,399,189)
{
Left=330
Top=80
Width=4
Height=4
Caption=""
Alignment=1
}
Add(Hub,13959891,203,105)
{
OutCount=3
link(onEvent1,2774491:doStart,[(237,111)(237,48)])
link(onEvent2,708863:doTad,[])
link(onEvent3,2774491:doStop,[(249,125)(249,55)])
}
Add(TimeCounter,2774491,329,42)
{
Precision=1
link(onStop,8545957:doText,[])
}
Add(TimeCounter,13573240,329,182)
{
Precision=1
link(onStop,10677244:doText,[])
}
Add(Hub,10083536,203,182)
{
OutCount=3
link(onEvent1,13573240:doStart,[])
link(onEvent2,708863:doNesco,[(273,195)(273,125)])
link(onEvent3,13573240:doStop,[(301,202)(301,195)])
}
Add(Hub,6967569,154,98)
{
link(onEvent1,10083536:doEvent1,[(178,104)(178,188)])
link(onEvent2,13959891:doEvent1,[])
}
Add(Label,3343612,448,49)
{
Left=275
Top=55
Caption="Tad"
}
Add(Label,6614952,448,189)
{
Left=270
Top=80
Caption="nesco"
}



карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#67: 2011-05-27 10:08:26 ЛС | профиль | цитата
Tad писал(а):
потому, что где-то, кто-то установил WriteableConst=ON

Не нашел я этого в основных модулях
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#68: 2011-05-27 11:22:22 ЛС | профиль | цитата
Вон вверху добавил код. Пощелкай. А потом поменяй линки на первом хабе.
Шутка.
------------ Дoбавленo в 11.22:
Tad писал(а):
потому, что где-то, кто-то, установил WriteableConst=ON
с этим я видимо ошибся.
просто в функциях не работают "напрямую" с const ХХХ, а везде сначала делают а:=ХХХ и потом работают с а
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#69: 2011-05-27 11:26:36 ЛС | профиль | цитата
Tad писал(а):
А потом поменяй линки на первом хабе

А в чем прикол После смены линков получается, что твой код действительно медленнее, тк первый линк твой
------------ Дoбавленo в 11.26:
Прикол в другом, прикол в том что в моем коде компонента

Delete(Result, 1, L - 1);
работает быстрее, чем

Result := string(PChar(integer(@Result[1]) + L - 1));
И совсем непонятно, с чем это может быть связано
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#70: 2011-05-27 11:32:06 ЛС | профиль | цитата
А до смены линков твой код медленнее.
nesco писал(а):
А в чем прикол ?

nesco, на буке разница в показаниях почти в два раза при автономном питании и питании от сети.
Прикол, скорее всего, как в методе измерения времени, так и в особенностях работы винды.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#71: 2011-05-27 11:40:32 ЛС | профиль | цитата
Tad, че-то я мысль не уловил -- тестилка глючная, так, что ли Че-то мы тут помню обсуждали по поводу правильности такого тестирования
------------ Дoбавленo в 11.40:
Короче, для последнего кода компонента, результат быстродействия -- более чем, оптимистичный. Чего-то большего выдавливать из RealTime строкового парсера -- уже лишнее, кардинального роста быстродействия добиться не получится, он уже и сейчас приближается к "рассыпухе"
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#72: 2011-05-27 11:51:26 ЛС | профиль | цитата
Tad писал(а):
nesco, вот скажи мне : Какая разница, будет страница обоаботана за 1500 мкс или за 3000 мкс?
За 1.5 мсек или за 3 мсек?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#73: 2011-05-27 11:55:49 ЛС | профиль | цитата
nesco писал(а):
по поводу правильности такого тестирования

Я по опыту трёх суток, убитых на тестирование скоростей счётчиков, могу предположить, что метод For+TimeCounter без доп. извратов имеет слишком большую погрешность в МИЛЛИсекунды, что значительно превышает МИКРОсекунды. Факторов влияния там десяток.
------------ Дoбавленo в 11.55:
1nd1g0 писал(а):
Я Вам даже больше скажу, все эти замеры через TimeCounter, "стараниями" ОС и железа, имеют погрешность до десятков миллисекунд (и дело тут не в точности таймера). Мы и реальный приоритет потоку ставили, и отдельный поток с delay=0, и выгружали из памяти всё кроме ядра ОС - один и тот же тест показывает разброс в +- 20% Влияет всё, и настолько сильно, что преимущества какого-либо решения, если они идут "нога в ногу" -как в вашем примере с разбросом в 1.5 мс, объективно доказать почти невозможно. Единственное, что пока не пробовал - загрузить ядро windows pe без большей части железа, аппаратных ускорений, прерываний и т.п., в оперативку, тестируемое приложение не будет иметь интерфейса вообще, будет работать с правами системы и максимальным приоритетом. Но это уже, пардон, изврат ибо не выявит преимущества какого-либо варианта в реальных условиях ))

карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#74: 2011-05-27 11:58:12 ЛС | профиль | цитата
Tad писал(а):
За 1.5 мсек или за 3 мсек?

За 1,5 лучше, за следующие 1,5 можно еще и слона доесть

А вот так тестилка показывает лучший результат, видимо, сказывается разгон процессоров с исходного состояния до максимального

code_24181.txt
------------ Дoбавленo в 11.58:
1nd1g0 писал(а):
один и тот же тест показывает разброс в +- 20%

Мы тут разговор ведем не о 20-ти, а о 100 процентах разницы. 20-ть -- это мелочи.

Ну так что, добавляем в пакет, дальнейших рекомендаций, только не по увеличению быстродействия, не будет
карма: 22

0
файлы: 1code_24181.txt [2.9KB] [287]
Ответов: 3889
Рейтинг: 362
#75: 2011-05-27 12:04:05 ЛС | профиль | цитата
[flood]
nesco писал(а):
А вот так тестилка показывает лучший результат
На P4 3.2GHz HT + 512 RAM WinXPSP3 тыкаю кнопку, получаю результаты протиповоположные друг другу, то одна, то другая процедура побеждает с разницей от 200 до 10000 мкс. Бред эти тесты)
------------ Дoбавленo в 12.02:
О, рекорд, 18000 мкс в пользу nesco))
------------ Дoбавленo в 12.03:
А теперь победил Tad с 16000 мкс.

------------ Дoбавленo в 12.04:
Точность на грани фантастики[/flood]
карма: 1

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