powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / простые операции...
33 сообщений из 33, показаны все 2 страниц
простые операции...
    #34654556
i'm_novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброе время суток!

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

softwarerВ немного меньшей степени это верно для возможности сделать настройку в приложении. То есть "ALTER SESSION SET... " - это несколько лучше, чем параметр базы, приложение по крайней мере может настроить свой контекст - но все равно оказывается, что работа программных модулей уродуется внешними по отношению к ним настройками; достаточно представить себе общий модуль, используемый в нескольких проектах, в одном из которых вдруг решили "поменять настройку".Вообще-то, клиент вполне может прочитать все настройки сервера/базы/сессии и соответственно настроится самому.
...
Рейтинг: 0 / 0
простые операции...
    #34662705
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Потому что код, корректность которого зависит от режима работы базы - кошмар с точки зрения эксплуатации и сопровождения. База может понимать операцию сравнения так, может понимать иначе, может иметь разные по синтаксису операции "чувствительного" и "нечувствительного" сравнения - ничуть не возражаю, но за наличие настройки уровня базы "как следует сравнивать строки" надо бить, и больно. .
в горячо ненавидимом фокспро, после пары часов ночной работы както обнаружил что операция
сравнения строк по умолчанию выдает true по включению.
("a" = "ab" ) == true
и на 632 странице руководства рассказывалось про параметр, который может сделать сравнение
строк общепринятым(рефлексивным, симметричным и транзитивным) .
...
Рейтинг: 0 / 0
простые операции...
    #34662711
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizв горячо ненавидимом фокспро, после пары часов ночной работы както обнаружил что операция сравнения строк по умолчанию выдает true по включению.
("a" = "ab" ) == true
и на 632 странице руководства рассказывалось про параметр, который может сделать сравнение
строк общепринятым(рефлексивным, симметричным и транзитивным) .Вообще-то, это не ФоксПро виноват. Это надо бить вполне конкретного Wayne Ratliff'а. Впрочем не уверен, возможно это все Jeb Long'овские проделки. Кто-то из них придумал это издевательство над знаком равенства и так оно и дожило до наших дней... уж тридцать с хвостиком лет прошло, а люди до сих пор мучаются :)
...
Рейтинг: 0 / 0
простые операции...
    #34662712
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВовсе нет.
Вовсе да.

White OwlПрикладник обычно пишет для одной конкретной базы.
Если бы написание софта под собственные нужды было единственным режимом работы, с этим можно было бы согласиться. Тогда остались бы "мелочи" - например, неработоспособность кода, полученного от знакомых, найденного в интернете, унаследованного от старых версий или сделанного для ранее специфической базы.

White OwlЛюдей которые скачут между несколькими БД с разными настройками - по пальцам пересчитать.
Угу. Всего лишь "все сотрудники софтовых контор и консалтеров".

White OwlИ в конце-концов, я с трудом представляю себе прикладную задачу в которой надо делать регистрозависимое сравнение.
Хотя бы контроль изменения поля. Допустим, система поддерживает историю смены фамилий, а для скорости денормализована - в запись человека внесена текущая фамилия. Обнаружили мы с Вами, что надо поправить фамилию ИВанов на Иванов. Поправили - а триггер обнаружил, что фамилия ни фига не изменилась, и менять денормализованное поле не стал...

White OwlВообще-то, клиент вполне может прочитать все настройки сервера/базы/сессии и соответственно настроится самому.
Угу, может настроиться. Добавить upper в нужные sql-и....... Офигенно разумный режим.
...
Рейтинг: 0 / 0
простые операции...
    #34662713
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz
Необычная работа привычных вещей - немного другая вещь, хотя и связанная. Честно говоря, по Вашему примеру я сходу предположил, что он сумел как в Фортране - присвоить константе "а" значение "ab"
...
Рейтинг: 0 / 0
простые операции...
    #34662718
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl tchingizв горячо ненавидимом фокспро, после пары часов ночной работы както обнаружил что операция сравнения строк по умолчанию выдает true по включению.
("a" = "ab" ) == true
и на 632 странице руководства рассказывалось про параметр, который может сделать сравнение
строк общепринятым(рефлексивным, симметричным и транзитивным) .Вообще-то, это не ФоксПро виноват. Это надо бить вполне конкретного Wayne Ratliff'а. Впрочем не уверен, возможно это все Jeb Long'овские проделки. Кто-то из них придумал это издевательство над знаком равенства и так оно и дожило до наших дней... уж тридцать с хвостиком лет прошло, а люди до сих пор мучаются :)
ну, я, слава Богу, отмучился в 93 - 94, но очень в память врезалось.
)))
...
Рейтинг: 0 / 0
простые операции...
    #34662720
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer White OwlВовсе нет. Вовсе да.Так, спор выходит на уровень религии, так что прекращаем :)

softwarer White OwlЛюдей которые скачут между несколькими БД с разными настройками - по пальцам пересчитать. Угу. Всего лишь "все сотрудники софтовых контор и консалтеров".ээээ..... у нас разные консалтеры? Впрочем да, мы кажется в разных странах живем :)

softwarer White OwlИ в конце-концов, я с трудом представляю себе прикладную задачу в которой надо делать регистрозависимое сравнение.Хотя бы контроль изменения поля. Допустим, система поддерживает историю смены фамилий, а для скорости денормализована - в запись человека внесена текущая фамилия. Обнаружили мы с Вами, что надо поправить фамилию ИВанов на Иванов. Поправили - а триггер обнаружил, что фамилия ни фига не изменилась, и менять денормализованное поле не стал...Принято. Я ни разу не писал ничего для систем типа ЗАГСа, так что с такой задачей не сталкивался.
...
Рейтинг: 0 / 0
простые операции...
    #34662722
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer tchingiz
Необычная работа привычных вещей - немного другая вещь, хотя и связанная. Честно говоря, по Вашему примеру я сходу предположил, что он сумел как в Фортране - присвоить константе "а" значение "ab"
насколько я помню,
для этого константу надо было в подпрограмму передавать.
И присвоение выполнять там. То есть присвалось все таки переменной - формальному параметру.
...
Рейтинг: 0 / 0
простые операции...
    #34662723
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz White Owlуж тридцать с хвостиком лет прошло, а люди до сих пор мучаются :)ну, я, слава Богу, отмучился в 93 - 94, но очень в память врезалось.
)))Я подольше. Начиная с FoxBase в 90-ом, потом Clipper с перерывами почти до 2004-го. Так что памать о неполнострочном сравнении я пронесу до самой могилы. Хотя как называется опиция которая эту фигню выключает я уже не помню. :)
...
Рейтинг: 0 / 0
простые операции...
    #34662740
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я приложил массу усилий (парадокс, пролог, сишный библиотека CodeBase, павербилдер), чтобы соскочить с этого жуткого семейства(дибейз, фоксбейз, клиппер, фокспро).
там еще забавный компилятор который после else не видел остаток строки до ньюлайна
традиционная конструкция
if
else if
...
else if
else
тоже не нужна им.
))
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / простые операции...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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