Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / простые операции... / 25 сообщений из 33, страница 1 из 2
11.07.2007, 18:28
    #34654556
i'm_novice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
доброе время суток!

глядя иногда кто как пишет (мануалы, примеры, форумы, чьи-то исходники...) код программ,
заинтересовал такой вопрос.
в процессе написания практически любой программы сталкиваешься с работой со строками, будь-то
конкатенация, верхний/нижний регистр, поиск подстроки и т.п. во многих языках такие функции удачно
реализованы и всеми юзаются. а если в проекте использкется и какая-нибудь субд, то во многих из них
тоже реализованы такие функции.
так вот интересно, чьи функции "быстродейственнее" в итоге работы скрипта/программы: языка
программирования или субд? больше интересуют (т.к. имею непосредственное отношение)
функции интерпретаторов perl и php и субд mysql. но остальное тоже интересно)
...
Рейтинг: 0 / 0
12.07.2007, 08:13
    #34655136
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
сам то понял что сказал?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.07.2007, 09:45
    #34655354
i'm_novice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
возможно, я что-то неправильно понял, намекните или тыкнете где
...
Рейтинг: 0 / 0
12.07.2007, 09:56
    #34655379
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
СУБД - это интерпретатор. со всеми вытекающими


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.07.2007, 18:08
    #34657620
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
i'm_noviceтак вот интересно, чьи функции "быстродейственнее" в итоге работы скрипта/программы: языка программирования или субд?Вопрос не имеет ответа. Потому что это зависит от очень и очень многих факторов. Чтобы решить склеивать два текстовых поля в sql запросе или склеивать их уже на клиенте при разборе резалтсета надо знать структуру данных. Чаще всего лучше отдать такие задачи клиенту, потому что: Во первых, сервер бд может обрабатывать множество запросов одновременно и несложная операция склейки строк может в итоге вылится в несколько процентов потери производительности для других клиентов. И во вторых, если у по одному из текстовых полей есть индекс а ты приклеил к этому полю другое - возможно что сервер уже не узнает индекс и общее время выборки увеличится многократно.

i'm_novice больше интересуют (т.к. имею непосредственное отношение) функции интерпретаторов perl и php и субд mysql. но остальное тоже интересно)А ты сам попробуй. Сделай две программы, одна с текстовыми операциями в sql запросе, другая пусть выбирает текстовые поля как есть и делает склейку в скрипте. Замерь время выполнения той и другой - получишь ответ для своей системы.
...
Рейтинг: 0 / 0
12.07.2007, 18:12
    #34657628
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
ScareCrowСУБД - это интерпретатор. со всеми вытекающими Не надо говорить глупостей.
...
Рейтинг: 0 / 0
13.07.2007, 17:08
    #34658354
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
i'm_noviceтак вот интересно, чьи функции "быстродейственнее" в итоге работы скрипта/программы: языка программирования или субд?
Затрудняюсь придумать задачу, в которой ответ на этот вопрос имеет хоть сколько-нибудь практическое значение. Здесь стоит думать об архитектурно верном решении, а не о быстродействии.
...
Рейтинг: 0 / 0
13.07.2007, 17:31
    #34658416
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarerЗдесь стоит думать об архитектурно верном решении, а не о быстродействии.Верность решения с точки зрения архитектуры зависит так же и от быстродействия. Что такое архитектурно верное решение? Это решение которое легко поддерживается, легко масштабируется и быстро работает, не так ли? А значит и думы о быстродействии занимают треть времени при поиске архитектурно верного решения.
Ы? :)
...
Рейтинг: 0 / 0
13.07.2007, 17:40
    #34658445
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White OwlВерность решения с точки зрения архитектуры зависит так же и от быстродействия.
Не "от быстродействия", а "от быстродействия, имеющего значение с точки зрения решения итоговой задачи". Для задач вида "скриптовый язык работает с БД" думать о быстродействии строковых операций, мягко говоря, смешно.

А вот программистов, которые сделав "тест на быстродействие" запихнут эти операции туда, где им решительно не место с архитектурной точки зрения, я к сожалению очень даже себе представляю.
...
Рейтинг: 0 / 0
13.07.2007, 19:50
    #34658669
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarerА вот программистов, которые сделав "тест на быстродействие" запихнут эти операции туда, где им решительно не место с архитектурной точки зрения, я к сожалению очень даже себе представляю.Одно маленькое "но", ты забыл сказать как надо определить где этим самым операциям место? Дай свою инструкцию по определению правильного места для строковых операций.
...
Рейтинг: 0 / 0
14.07.2007, 11:19
    #34658945
i'm_novice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White Owl softwarerА вот программистов, которые сделав "тест на быстродействие" запихнут эти операции туда, где им решительно не место с архитектурной точки зрения, я к сожалению очень даже себе представляю.Одно маленькое "но", ты забыл сказать как надо определить где этим самым операциям место? Дай свою инструкцию по определению правильного места для строковых операций.
будьте любезны. интересно.
...
Рейтинг: 0 / 0
14.07.2007, 13:44
    #34659048
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White OwlОдно маленькое "но", ты забыл сказать как надо определить где этим самым операциям место?
Думать головой.

White OwlДай свою инструкцию по определению правильного места для строковых операций.
Так же, как и для любых других операций. Надеюсь, ты не просишь краткой инструкции по конструированию программных систем?

Скажем, если мы считаем, что фамилия должна быть в initcaps-е - это надо делать на сервере (можно, но необязательно, продублировать на клиенте). Скажем, если мы считаем, что суммы должны выводиться как 9'990.00 - этого не надо делать на сервере. Однако, более-менее кратко пересказать методику определения "где когда" - увы, не способен.
...
Рейтинг: 0 / 0
14.07.2007, 16:30
    #34659173
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarerДля задач вида "скриптовый язык работает с БД" думать о быстродействии строковых операций, мягко говоря, смешно.
- не смешно. Удачно созданная программа на скриптовом языке может работать на порядок быстрее неудачно созданной, а учитывая возможность интенсивного использования такой программы (количество вызовов в еденицу времени) все это пересчитывается в загрузку процессора машины на которой запускается скрипт. В контексте той задачи которую имел в виду автор топика (скорее всего речь шла о серверных web-приложениях) не оптимизированый по быстродействию скрипт может создать серьезные проблемы для сервера на котором он запускается, при большой посещаемости сайта.

- другой вопрос как именно оптимизировать работу со строками. В большинстве случаев идея запихнуть логические конструкции в базу данных и использовать встроенные функции базы порочна, так как появляется сильная зависимость программы от базы данных (от типа и версии этой базы), что мешает развитию программы.

- для повышения эффективности работы со строками в программе в первую очередь надо знать особенности строковых операций и конкретных функций для работы со строками в том языке на котором пишется скрипт.
...
Рейтинг: 0 / 0
16.07.2007, 12:12
    #34660625
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
Kachalov- не смешно. Удачно созданная программа на скриптовом языке может работать на порядок быстрее неудачно созданной, а учитывая возможность интенсивного использования такой программы
Следует выкинуть "скриптовой язык" и писать на инструментах, нормально тянущих серьезную нагрузку.
...
Рейтинг: 0 / 0
16.07.2007, 13:24
    #34660912
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarer
Следует выкинуть "скриптовой язык" и писать на инструментах, нормально тянущих серьезную нагрузку.
- и уничтожить всех программистов использующих для web-программирования PHP :)

- кривой код можно написать на любом языке :)
...
Рейтинг: 0 / 0
16.07.2007, 14:02
    #34661109
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
Kachalov- и уничтожить всех программистов использующих для web-программирования PHP :)
Зачем тратить силы на лишние непродуктивные действия? Если все сайты в мире станут "серьезными" - сами вымрут, а если не станут - пусть лучше живут, иначе пользователи, глядишь, кого другого дергать начнут.

Kachalov- кривой код можно написать на любом языке :)
Безусловно. Однако, снявши голову - по волосам не плачут, а выбрав такую конфигурацию - почему-то начинают бороться за такты.
...
Рейтинг: 0 / 0
16.07.2007, 14:55
    #34661374
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
i'm_noviceбудьте любезны. интересно.
Код: plaintext
1.
select string from table where upper(substr(string, 5 , 3 ))='ABC'
...
Рейтинг: 0 / 0
16.07.2007, 18:29
    #34662302
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
мод i'm_noviceбудьте любезны. интересно.
Код: plaintext
1.
select string from table where upper(substr(string, 5 , 3 ))='ABC'
Угу... Вообще-то, существуют базы данных умеющие сравнивать текстовые значения без учета регистра. И на таких БД использование функции upper() для сравенения приводит к бессмысленной трате процессорных ресурсов.
Все зависит от конкретной БД и от структуры данных.
...
Рейтинг: 0 / 0
16.07.2007, 19:41
    #34662430
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White OwlВообще-то, существуют базы данных умеющие сравнивать текстовые значения без учета регистра.
К использованному в примере substr эта логика тоже относится? :)

White OwlИ на таких БД использование функции upper() для сравенения приводит к бессмысленной трате процессорных ресурсов.
Не уверен, кстати. Зависит от реализации.
...
Рейтинг: 0 / 0
16.07.2007, 21:18
    #34662515
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarer White OwlИ на таких БД использование функции upper() для сравенения приводит к бессмысленной трате процессорных ресурсов.Не уверен, кстати. Зависит от реализации.почему не уверен? Если бд работает в режиме нечувствительности к регистрам, то любая операция сравнения строк будет неявно вызывать внутренний аналог upper/lower или функцию сравнения с учетом страниц для юникодных строк. Оборачивать это своим собственным вызовом upper() приведет к двойной работе или хотя бы проверке, надо эту работу проводить второй раз или не надо.
Использовать substr() в where вещь безусловно полезная, нужная и правильная. Поэтому я в первом посте про нее и не говорил. Вот теперь можешь ехидничать :)
Но вообще-то, автор топика говорил не про строковые функции в where, он говорил про строковые функции в определении вычислимых колонок в запросе. Это все-таки совершенно другое...
...
Рейтинг: 0 / 0
16.07.2007, 22:41
    #34662591
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White Owlпочему не уверен?
Потому что зависит от реализации.

White OwlЕсли бд работает в режиме нечувствительности к регистрам,
В скобках отметим, что за такие режимы надо отрывать руки.

White Owlто любая операция сравнения строк будет неявно вызывать внутренний аналог upper/lower или функцию сравнения с учетом страниц для юникодных строк. Оборачивать это своим собственным вызовом upper() приведет к двойной работе или хотя бы проверке, надо эту работу проводить второй раз или не надо.
Угу. Игнорирование вызова upper на стадии построения плана - потребуется поставить очень нетривиальный эксперимент, чтобы обнаружить следовые количества влияния на производительность.

White OwlВот теперь можешь ехидничать :)
Спасибо, только этого и ждал :)

White OwlНо вообще-то, автор топика говорил не про строковые функции в where, он говорил про строковые функции в определении вычислимых колонок в запросе. Это все-таки совершенно другое...
Мне тоже пришла в голову именно такая трактовка, но вообще-то мод прав, найдутся и персонажи, который под лозунгом "и вообще еще неизвестно, как эта субд считает регэкспы" сделают фильтрацию на клиенте.
...
Рейтинг: 0 / 0
16.07.2007, 22:53
    #34662601
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarer White OwlЕсли бд работает в режиме нечувствительности к регистрам,
В скобках отметим, что за такие режимы надо отрывать руки.Почему??? Я работал и с чувствительными и с нечувствительными базами. С нечувствительными работать намного удобнее. И за шесть лет жизни на нечувствительной был только один-единственный случай когда потребовалось сделать чувствительное сравнение.

softwarerИгнорирование вызова upper на стадии построения плана - потребуется поставить очень нетривиальный эксперимент, чтобы обнаружить следовые количества влияния на производительность.Конечно, на фоне остальных тормозов эти долюшечки процента заметить будет сложно. Главное что потеря все же будет и она будет не нулевой...

softwarerМне тоже пришла в голову именно такая трактовка, но вообще-то мод прав, найдутся и персонажи, который под лозунгом "и вообще еще неизвестно, как эта субд считает регэкспы" сделают фильтрацию на клиенте.Почему же "найдутся"? Находятся....
...
Рейтинг: 0 / 0
17.07.2007, 00:44
    #34662688
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
White Owl softwarer White OwlЕсли бд работает в режиме нечувствительности к регистрам,
В скобках отметим, что за такие режимы надо отрывать руки.Почему???
Потому что код, корректность которого зависит от режима работы базы - кошмар с точки зрения эксплуатации и сопровождения. База может понимать операцию сравнения так, может понимать иначе, может иметь разные по синтаксису операции "чувствительного" и "нечувствительного" сравнения - ничуть не возражаю, но за наличие настройки уровня базы "как следует сравнивать строки" надо бить, и больно. Вон, ораклоиды додумались не так давно сделать чувствительную сортировку - и с тех пор не утихают вопросы "а какого хрена здесь сортируется не так, как вон там?"

В немного меньшей степени это верно для возможности сделать настройку в приложении. То есть "ALTER SESSION SET... " - это несколько лучше, чем параметр базы, приложение по крайней мере может настроить свой контекст - но все равно оказывается, что работа программных модулей уродуется внешними по отношению к ним настройками; достаточно представить себе общий модуль, используемый в нескольких проектах, в одном из которых вдруг решили "поменять настройку".

White OwlКонечно, на фоне остальных тормозов эти долюшечки процента заметить будет сложно. Главное что потеря все же будет и она будет не нулевой...
Это скорее долюшечки долюшечек процента. Их будет очень трудно заметить даже на фоне "эффективности строковых операций".

Конечно, это будет не математический ноль - это будет физический ноль. Вы сказали, если мне не изменяет память, "напрасные траты процессора" - признаться, не готов так ругать траты, с трудом различимые под микроскопом. Во всяком случае, я вполне готов принять аргументацию "зато не надо думать, выставлен режим регистронезависимости или нет".
...
Рейтинг: 0 / 0
17.07.2007, 01:13
    #34662697
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarerПотому что код, корректность которого зависит от режима работы базы - кошмар с точки зрения эксплуатации и сопровождения.Вовсе нет. Прикладник обычно пишет для одной конкретной базы. Людей которые скачут между несколькими БД с разными настройками - по пальцам пересчитать. И когда ты занимаешься увязкой между собой данных между двумя разными базами настройки конкретных БД это такая малость... И в конце-концов, я с трудом представляю себе прикладную задачу в которой надо делать регистрозависимое сравнение.

softwarerВ немного меньшей степени это верно для возможности сделать настройку в приложении. То есть "ALTER SESSION SET... " - это несколько лучше, чем параметр базы, приложение по крайней мере может настроить свой контекст - но все равно оказывается, что работа программных модулей уродуется внешними по отношению к ним настройками; достаточно представить себе общий модуль, используемый в нескольких проектах, в одном из которых вдруг решили "поменять настройку".Вообще-то, клиент вполне может прочитать все настройки сервера/базы/сессии и соответственно настроится самому.
...
Рейтинг: 0 / 0
17.07.2007, 01:28
    #34662705
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простые операции...
softwarer
Потому что код, корректность которого зависит от режима работы базы - кошмар с точки зрения эксплуатации и сопровождения. База может понимать операцию сравнения так, может понимать иначе, может иметь разные по синтаксису операции "чувствительного" и "нечувствительного" сравнения - ничуть не возражаю, но за наличие настройки уровня базы "как следует сравнивать строки" надо бить, и больно. .
в горячо ненавидимом фокспро, после пары часов ночной работы както обнаружил что операция
сравнения строк по умолчанию выдает true по включению.
("a" = "ab" ) == true
и на 632 странице руководства рассказывалось про параметр, который может сделать сравнение
строк общепринятым(рефлексивным, симметричным и транзитивным) .
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / простые операции... / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]