|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъчтобы уменьшить время выполнения программы. За счёт чего должно уменьшиться время выполнения программы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 14:48 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Уткъчтобы уменьшить время выполнения программы. За счёт чего должно уменьшиться время выполнения программы? За счет параллельных коннектов (и запросов). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 14:49 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
УткъЗа счет параллельных коннектов (и запросов). Каким образом коннекты и запросы станут параллельными? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:20 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov УткъЗа счет параллельных коннектов (и запросов). Каким образом коннекты и запросы станут параллельными? они будут вызваны параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:32 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Я так понимаю что эти настройки - max_parallel * - * processes будут ограничивать любой параллелизм сверху. https://www.postgresql.org/docs/current/how-parallel-query-works.html ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:43 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъони будут вызваны параллельно. КАК? API PostgeSQL синхронное, функция не вернётся пока не выполнит операцию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:45 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Уткъони будут вызваны параллельно. КАК? API PostgeSQL синхронное, функция не вернётся пока не выполнит операцию. В том-то и дело что вернет. Чтобы здесь не забивать лишней информацией топик, выслал вам на почту, указанную в профиле, информацию про параллельные запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:50 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Я так понимаю что эти настройки - max_parallel * - * processes будут ограничивать любой параллелизм сверху. https://www.postgresql.org/docs/current/how-parallel-query-works.html Не, это когда уже запрос отправлен и он в несколько потоков выполняется. А там можно сделать так чтобы запрос отправился и вернул управление к программе, затем просто отслеживаются статусы. PQsendQuery Отправляет команду серверу, не ожидая получения результата . ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:54 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
А подскажите, можно сдеать функцию, передай ей переменную и чтобы она эту переменную изменила так, чтобы измененная переменная была доступна в main() ? У меня пока пулучилось передать в функию в переменную, она там считывается в локальную переменную функции и изменить эту переменную ы функции так. чтобы она и в в main() поменялась - не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:57 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъвыслал вам на почту, указанную в профиле В моём профиле не указана почта. В любом случае - да, массив (даже обычный, а не ассоциативный) тебе поможет. Это как раз и есть пачка слепленных вместе переменных. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:57 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Чета как-то сложно всё. Вот мне в любой DBMS нужно например ее jdbc-драйвер, пул коннектов (типа Hikari), и примитивы мультипоточки Future/Callable. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 15:58 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ А подскажите, можно сдеать функцию, передай ей переменную и чтобы она эту переменную изменила так, чтобы измененная переменная была доступна в main() ? У меня пока пулучилось передать в функию в переменную, она там считывается в локальную переменную функции и изменить эту переменную ы функции так. чтобы она и в в main() поменялась - не получается. Можно, в параметрах передаешь указатель на переменную https://metanit.com/cpp/c/5.7.php ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:00 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ mayton Я так понимаю что эти настройки - max_parallel * - * processes будут ограничивать любой параллелизм сверху. https://www.postgresql.org/docs/current/how-parallel-query-works.html Не, это когда уже запрос отправлен и он в несколько потоков выполняется. А там можно сделать так чтобы запрос отправился и вернул управление к программе, затем просто отслеживаются статусы. PQsendQuery Отправляет команду серверу, не ожидая получения результата . Чтобы действительно распараллелить запросы надо делать множество независимых коннектов к базе и посылать разные запросы через них. А там делаешь ты синхронные или асинхронные запросы уже не важно. Асинхронный запрос очень удобен если тебе лень самостоятельно делать многопоточное приложение, а программа кроме ожидания ответа сервера должна делать что-то еще, например мигать надписью "ждем ответа от сервера уже Х секунд". Чтобы юзер не думал что ты завис. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:00 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Уткъвыслал вам на почту, указанную в профиле В моём профиле не указана почта. В любом случае - да, массив (даже обычный, а не ассоциативный) тебе поможет. Это как раз и есть пачка слепленных вместе переменных. выслал сюда, наверное это не почта... Массив, получается надо делать из структуры? Т.к. там разные типы данных, довольно экзотические... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:00 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dima T Уткъ А подскажите, можно сдеать функцию, передай ей переменную и чтобы она эту переменную изменила так, чтобы измененная переменная была доступна в main() ? У меня пока пулучилось передать в функию в переменную, она там считывается в локальную переменную функции и изменить эту переменную ы функции так. чтобы она и в в main() поменялась - не получается. Можно, в параметрах передаешь указатель на переменную https://metanit.com/cpp/c/5.7.php Спасибо, читаю ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:01 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
White Owl Уткъ пропущено... Не, это когда уже запрос отправлен и он в несколько потоков выполняется. А там можно сделать так чтобы запрос отправился и вернул управление к программе, затем просто отслеживаются статусы. PQsendQuery Отправляет команду серверу, не ожидая получения результата . Чтобы действительно распараллелить запросы надо делать множество независимых коннектов к базе и посылать разные запросы через них. А там делаешь ты синхронные или асинхронные запросы уже не важно. Асинхронный запрос очень удобен если тебе лень самостоятельно делать многопоточное приложение, а программа кроме ожидания ответа сервера должна делать что-то еще, например мигать надписью "ждем ответа от сервера уже Х секунд". Чтобы юзер не думал что ты завис. Так, парралельные запросы это не 100500 запросов к одному серверу. А 1 запрос к 100500 серверам. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:02 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ Dima T Повторяю, для таких целей используют ассоциативные массивы. Схематично это выглядит так Код: plaintext 1. 2. 3.
Это в С++ так. PS Имена переменных условны, во время работы они превращаются в адрес памяти, где хранится содержимое. Все время забываю проусловность переменных ) Кстати, такая идея пришла: Можно же стуктуру наверное использовать, точнее массив из структуры. Там просто типы не только char*, но и специфичиские библиотечные типа буфера и тп. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
а для нахождения делаешь цикл типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:09 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Утк. Ты всех запутал. Это называется distributed . ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:09 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Кстати задолго до 100500 сетевых коннектов количество портов на 1 ethernet интерфейс резко закончится ... поэтому тут уж или Ишак сдохнет или Султан. Я-бы предложил внести в топик более близкое к задаче число. 100? 1000? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:15 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Можно начать с совсем приземленных вещей и спросить про готовность версии для 1 соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:22 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ White Owl пропущено... Для параллельных запросов это тебе не поможет. Когда ты отправишь второй запрос таким образом - получишь ошибку "занято". Чтобы действительно распараллелить запросы надо делать множество независимых коннектов к базе и посылать разные запросы через них. А там делаешь ты синхронные или асинхронные запросы уже не важно. Асинхронный запрос очень удобен если тебе лень самостоятельно делать многопоточное приложение, а программа кроме ожидания ответа сервера должна делать что-то еще, например мигать надписью "ждем ответа от сервера уже Х секунд". Чтобы юзер не думал что ты завис. Так, парралельные запросы это не 100500 запросов к одному серверу. А 1 запрос к 100500 серверам. Кстати, из личного опыта - это не обязательно ускоряет работу. У меня была задача: из центрального офиса узнать состояние дел в филиалах. Из центрального офиса подключались к БД филиала, отправляли несколько запросов на итоговые суммы и отключались. Если база в филиалах работала как полагается, то весь цикл подключение-запрос-отключение укладывался в пару секунд. И последовательный опрос всех филиалов занимал около двух-трех минут. Проблемы были если филиал выключил свою БД или сеть до филиала упала - тогда подключение могло занять до полуминуты прежде чем выдать ошибку. Сделали параллельные запросы ко всем филиалам разом - серьезно улучшили время работы если есть проблемы в сети, но примерно в три раза ухудшили работу если с филиалами нет проблем. Затык был в клиентской библиотеке подключения, она не могла держать более десятка подключений разом. Внутри самой библиотеки был "тайный" пул (в смысле не описанный в документации), и если в данный момент уже есть десять параллельных коннектов (не важно рабочих или нет) одиннадцатый будет висеть внутри connect() функции. Впрочем, это было в 2005-ом и на другой БД. Что будет с Постгресом в 2022-ом - надо пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:26 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
White Owl Уткъ пропущено... Так, парралельные запросы это не 100500 запросов к одному серверу. А 1 запрос к 100500 серверам. Кстати, из личного опыта - это не обязательно ускоряет работу. У меня была задача: из центрального офиса узнать состояние дел в филиалах. Из центрального офиса подключались к БД филиала, отправляли несколько запросов на итоговые суммы и отключались. Если база в филиалах работала как полагается, то весь цикл подключение-запрос-отключение укладывался в пару секунд. И последовательный опрос всех филиалов занимал около двух-трех минут. Проблемы были если филиал выключил свою БД или сеть до филиала упала - тогда подключение могло занять до полуминуты прежде чем выдать ошибку. Сделали параллельные запросы ко всем филиалам разом - серьезно улучшили время работы если есть проблемы в сети, но примерно в три раза ухудшили работу если с филиалами нет проблем. Затык был в клиентской библиотеке подключения, она не могла держать более десятка подключений разом. Внутри самой библиотеки был "тайный" пул (в смысле не описанный в документации), и если в данный момент уже есть десять параллельных коннектов (не важно рабочих или нет) одиннадцатый будет висеть внутри connect() функции. Впрочем, это было в 2005-ом и на другой БД. Что будет с Постгресом в 2022-ом - надо пробовать. Ага, интересный случай. Я этот способ использую давно, сейчас просто на Си решил переложить, так что сам метод опробованный. парралельность я конечно ограницу искусттвенно, на всяйкий случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:54 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Утк. Ты всех запутал. Это называется distributed . Да, наверное, я не знал как это называется просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:55 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Кстати задолго до 100500 сетевых коннектов количество портов на 1 ethernet интерфейс резко закончится ... поэтому тут уж или Ишак сдохнет или Султан. Я-бы предложил внести в топик более близкое к задаче число. 100? 1000? ну в райное 100-1000 в итоге думаю и будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:56 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
White Owl Уткъ пропущено... Все время забываю проусловность переменных ) Кстати, такая идея пришла: Можно же стуктуру наверное использовать, точнее массив из структуры. Там просто типы не только char*, но и специфичиские библиотечные типа буфера и тп. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
а для нахождения делаешь цикл типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
..сейчас попробую сделать... Спасибо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 16:57 |
|
|
start [/forum/topic.php?fid=57&msg=40130776&tid=2017122]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 425ms |
0 / 0 |