Re: Дубли и сортировка чисел в символьной строке | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Оцени в промежутке между своими стопками - сколько шороху своими циклами у них навожу. Меряют что-то, измеряют. На пользу - пусть изучают творчество lulgu, а то засиделись. |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ты слаб, лулну, в троллениии монстров. Троллит можно весело и восторженно, меня потрольь, БКшку, все поймут. )
Но торолль с знанием тематики рорлления... у ьеюя какая тематика? Я ж говорю,тролли тоскоивые ) Как в мс, убогая конотороа. ХП не спрсил, ъто не принято..... Исправлено 1 раз(а). Последнее : of63, 12.10.18 00:52 |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А как конкретно ты сравнивал? Надо видимо как-то привести к одному знаменателю собственно тестирование. Чтобы можно было подставляя разные процедуры видеть более-менее результаты в более-менее однотипных условиях. Например так:
Ну и сама программа тестирования:
По предложению Тарана использовать массивы накидал такой свой вариант:
Кстати проверил ради интереса, как влияет на время использование IIF для отсечения лишней последней запятой при наращивании. И использование SUBS. Так оказалось, что способ с IIF (см.выше) по времени выходит больше. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Сравнивал примерно так же, как и ты, но без оформления в функцию, на вызов которой тоже тратится определенное время, что немного "портит картинку".
Но ты напрасно трудился - практически твой вариант уже был здесь представлен ранее, только вместо функций GETWORD* для разбора строки использовалась ALINES() Естественно, ведь проще 1 раз отсечь символ, чем много раз проверять. Но это зависит и от размерности массива - будь он покороче, результат мог быть и другим - все же одна такая проверка работает быстрее усечения строки. Но если биться за доли секунды, то у тебя там ближе к концу есть две лишние строки:
Ну, и заменив TRAN() на ALLT(STR()), ты, думаю, выиграешь больше, чем 0.2 сек. |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Ну про лишнюю пару возможно, впопыхах писал, торопился убежать. В целом же - единообразие сравнения на равных условиях для разных вариантов все же как бы важнее собственно выигрышного оформления. Потом уже, после окончательного выбора, само собой всегда можно подумать и над еще лучшей оптимизацией и выгадыванием по нюансам. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если стоит цель проверять именно функцию сортировки чисел в строке, то даже наличие курсора с тестовыми данными (тем более довольно массивного) уже вносит свои погрешности - по хорошему надо либо перетасовывать вызовы тестируемых функций (сначала v1 проверять, потом v2, но при следующем прогоне делать наоборот), или вообще не заморачиваться с курсором и тестированием 100к РАЗНЫХ строк, а тестировать всего десяток "показательных" вариантов такой строки - в простом цикле (да и тот нужен лишь потому что само по себе исполнение такого кода очень быстрое, и точно замерить время одного вызова практически невозможно).
------------------ WBR, Igor |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я не это имел в виду: допустим, "чистая" функция1 исполняется 0,0001 сек, а функция2 - 0,0002 сек, то есть разница - в 2 раза. Но если к каждой из них добавить нечто, не имеющее к ним прямого отношения (у тебя это временнЫе затраты на вызов самих функций), то соотношение времен будет уже меньше 2. Это я и назвал "портится картинка". Например, замерь время выполнения такого цикла (у меня 12 сек):
А теперь оформи команду внутри цикла как функцию (у меня 48 сек):
На что ушло более полуминуты? Исправлено 1 раз(а). Последнее : akvvohinc, 13.10.18 00:03 |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В большинстве нетривиальных случаев доля накладных расходов на "просто вызов функции" будет пренебрежимо мала.
А вот доступ к курсору/таблице существенно влияет на тестирование функции - даже если прямо в SELECT эту UDF и прописать, не говоря уж про SCAN или REPLACE ALL ... ------------------ WBR, Igor |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Время, тратящееся на сам SCAN и REPLACE, можно измерить отдельно (например, запустив в цикле пустой SCAN лишь с REPLACE) и учесть в "результате соревнований".
Возможно, это будет и не совсем то же самое, что SCAN "с нагрузкой", но в целом, думаю, оценка "чистых" функций станет при этом точнее. |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Можно вообще профайлер использовать. |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Да, так и приходится делать. Но тут ведь какая штука - доступ к таблицам сам по себе сильно разнится по времени (для идентичного шаблона использования) - от объёма памяти доступной под кэш, от загрузки дисковой подсистемы, от тех же АВ... Нет, если курсор и сравнительно небольшой - то ещё пол-беды, а если что большое то очень уж сильно скакать результат будет. Т.е. ещё один внешний цикл нужен и усреднение результатов. Ну и да - это уже ближе к "интеграционному тестированию", т.е. проверка полной цепочки - и отдельной функции и всей её обвязки в местах использования. Можно, но для точности всё равно нужен цикл и усреднение результатов - т.к. его точности явно недостаточно для измерения времени работы таких "быстрых" функций всего за 1 проход. ------------------ WBR, Igor |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Непонятно, зачем нужно гонять в цикле сомнительные "показательные" строки. Ничто не мешает в вашем тесте для формирования строк использовать функцию creacurs1 от Криспы, сохранив результаты не в курсоре, а в массиве. Тогда REPLACE ALL вам больше мешать не будет. Исправлено 1 раз(а). Последнее : lulgu, 14.10.18 12:51 |
Re: Дубли и сортировка чисел в символьной строке | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
|
© 2000-2024 Fox Club  |