Pull to refresh
1
0
Дмитрий Волин @dmxvlx

Программист С++

Send message

Ну prepared так prepared, сути дела это не меняет.


Вызов prepared statement — это вообще отдельная команда БД, и параметры там обычно передаются в бинарном виде.

Ну эээ, я как бэ знаю что такое prepared statement.


А вот универсального варианта, кроме как городить либо 1000 инсертов (пусть и с prepared statements), либо один большой, нет.

Делайте так, как считаете нужным.

Если же все данные объединить в один INSERT, то задержка будет не больше 10 мс.

Кроме как сформировать текст запроса с 1000 инсертами и выполнить запрос одним разом, — не вижу способов.
Если вы что-то знаете об этом больше меня — не стесняйтесь, рассказывайте :)

Каждый инсерт — это отправка команды по сети и ожидание ответа.

В случае транзакций, это работает по другому: ответ будет получен только если произойдёт ошибка во время вставок, либо по окончании и подтверждении транзакции. Транзакция — или всё или ничего.

Просто начинаете транзакцию, делаете кучу инсертов, и заканчиваете транзакцию. Современные СУБД достаточно умны чтобы кешировать данные на запись и отправлять их крупными пачками.

Как такового кеширования нет. Создаётся новая версия строки в таблице, и после коммита (подтверждения записи) они либо появляются в таблице, либо так и исчезают (вроде бы ещё и прихватывая с собой авто-инкрементированные последовательности айдишников; врать не буду, но в теории: если отменить в конце транзакцию на 100 вставок, то следующая запись будет с id: OLD+100+1)


Оттого, что основная часть работы по закреплению данных производится на этапе коммита, то по скорости выходит выгоднее вставки/удаления/обновления в блоке транзакции: или 100 записей за раз распихать по БД + обновить индексы, или 100 раз по одной записи — время затрачиваемое на блокировку таблиц/столбцов/строк (в зависимости от реализации/стратегии блокировок) является узким местом.

никогда не парсить бинарные данные с помощью приведения к типу указателя на attribute((packed)) структурки.

полностью согласен. без memcpy никуда...

У меня протокол поверх TCP, но нет, ничего такого не делаю.
Со всеми полями работаю в host ordering, так что нет необходимости держать
заголовок в двух представлениях(BE и LE) — сразу декодирую по приходу.


А так да, — ваше решение хорошо иллюстрирует пример безопасного кодинга со строгой типизацией.

На ютубе не закроют. Нужно или финансирование, или мультмэйкеров на добровольных началах. К сожалению(в данном конкретном случае) мультмэйкеры политикой не интересуются...

Ценю вашу способность иронизировать :)


И мог бы многое здесь написать, но поступлю как тот,
который не дурак, ну тот кто лучше промолчит ;)


PS: нужен карикатурный мультфильм в стиле масяня, чтобы
в нём освещались (высмеивались) все идиотские стремления
(если они таковыми являются, в том числе вымышленные)
власть имущих, приспособить хай-тек технологии, к достижению своих
примитивных хотелок. — Глядишь и отпугнёт некоторых делать глупости...

Страшно подумать: каким образом будет применяться этот ИИ в РФ...

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


Есть и другая сторона качественной трансформации: меньшинство захватывает власть, и не стремится создавать условия для пополнения своих рядов (не образовывает остальных), тем самым загоняя себя в ловушку (осадное положение). И когда их сожрут — дело лишь времени, но это произойдёт в любом случае. Но и у стратегии пополнения своих рядов есть свои ньюансы: если привлечь на свою сторону не достаточно образованных — болезнь внутри крепости. Если идея (курс развития) за которую топит меньшинство не достаточно разумна — другие образованные не подтянутся...


Всё усложняется количеством формирующихся меньшинств, и их культурными особенностями. Как эти проблемы решал тот или иной представитель, той или иной культуры будучи на самой вершине управленческих аппаратов — достаточно заглянуть в историю. Но одно могу сказать с уверенностью: итоги к которым они пришли, на прямую коррелируют с их умственными и/или моральными качествами.


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

Время на генерацию хэша для значения ключа и вставки ноды (unordered structure storage — hash based), превышают, или даже равно времени вставки ноды для ordered structure storage.


UPD: Ну или это связано с коллизиями хэша...

В своё время, для минимизации времени на аллокации при работе с аудио данными в реальном времени, использовал очереди, и дёргал буферы оттуда:


queue<audio_buffer<float>> in_, out_, free_;

внутри audio_buffer всё тот же std::vector, и даже если стоял фильтр на выход с другим рэйтом, то change capacity происходил два раза: первый при создании аудио-буфера под размер входящих данных(если в очереди свободных не оказывалось ни одного), и второй (И ТО если на выходе имеем бОльший рэйт) уже непосредственно перед ресэмплингом.


И всё нормально работало (после обработки сигнал подавался на аудио выход): без лагов и тормозов, с ресэмплингом и наложением нескольких фильтров.


Если руки растут откуда надо, можно и на векторах запрогить не хуже bulk-data way storage, конечно будет некоторый оверхэд по RAM, но отпадает необходимость ручками выделять/освобождать/ресайзить.


PS: AVL-ки по сравнению с RBtree имеют худшую производительность на вставках/удалении элементов. Префиксные деревья для строковых ключей хороши.

У вас этот код, что-то наподобие composed operations реализует?
PS: если бы не boost::asio, мне бы пришлось что-то такое же пилить :)

Ребят, я вот что заметил: если эмоциональную составляющую игнорировать, то на лицо ФГМ у большинства сегодняшних законотворцев. А раз так, то они всегда будут "догоняющими".


Новые родятся да командиры
Это хорошо, это так и надо
Что бы ни сказали—не станем спорить
Что бы ни дарили—не станем верить

Как листовка—так и я

Что бы ни случилось—умоем руки
Что бы ни стряслось—помолчим на небо
Станем необъятными, как полати
Станем заповедными, как деревья

Как листовка—так и я

Эх, новые родятся да командиры
Это ничего, видно так и надо
Главное, что дождик унёс соринку
Главное, что ёжик всегда в тумане

Как листовка—так и я

Егор Летов.


PS: всем хорошего настроения !

религиозный миф о боге, которого нет.

Это не миф, боги спрятались от таких назойливых как вы ;) (вернее не спрятались, а не разговаривают с вами, без обид)
Вера — дело личное, каждого из нас.

И вы всё ещё будете считать, что я пишу какую-то ерунду?

Сэр вытрите пену со рта, и пожалуйста, перестаньте брызгать слюной на мой фрак :)


Я конечно читал о всяких там комитетах 300 и тому подобных тайных обществах, но настоятельно рекомендую: не принимайте всё это близко к своему сердцу, оно не железное ;)


Просто возьмите и постройте свою систему хотя бы в миниатюре (посёлок или деревня), покажите нам! Но чур делать своими руками, не прибегая к помощи других людей — их же нельзя эксплуатировать, а если и прибегните к их помощи — то оплатите их труд достойно! чтобы они работали не за "в следующей жизни будет вам счастье"

Shpankov


Вы взрослый эрудированный человек, но почему чтобы решить выражение, вы его не упрощаете ?


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


Придём к соглашению: что в компетенции, и по долгу своего существования, чиновник и силовик(не суть какой величины: президент, муниципал, полицейский или рядовой солдат) — у них общая задача:
служить своему народу и приносить ему пользу и безопасность, не нарушая при этом их личных свобод !


Отсюда следует: все кто не способен работать на благо народа (или как вы говорите обслуживает интересы третьих лиц в виде баготеев чьи интересы чисто шкурные — бизнес-спортсмены короче), или делает это не эффективно (с точки зрения граждан которые и платят за весь этот банкет) — проф не пригодны! и не должны засиживаться в рабочем кресле, ибо есть другие, кто способен эту же работу сделать лучше и быстрее! — нужны механизмы для оттаскивания всяких ??????? от кормушки и недопущения их к ней (потому как они свою работу не работают, и вполне смогут попробовать себя в роли торговцев, или дворников) !


Как определить кто способен а кто нет: если перефразировать небезызвестную поговорку(не говори сколько ты зарабатываешь, покажи сколько ты заработал): Не говори что ты сделаешь, покажи что ты сделал!


А то что вы предлагаете обратно в феодализм удариться (без прав на частную собственность и без других ништяков которые стимулируют наши стремления) — это даже не смешно !


К чему это я: какую бы систему вы не пытались построить, если ~23% и более её участников дармоеды/проф не пригодные/коррупционеры — она обречена! (цифра взята на угад)

у нас ведь уже есть initializer_list (с оговоркой того что только по значению инициализация а не по именам, ну и как бэ -std=C++11)
я сам ещё в своих поделках не применял, но весчь оч полезная ;)

в C99 есть инициализация полей структуры по их именам:


struct mystuct {int  a; long b;}; 

struct mystuct ms = {.a=1, .b=2}; // C99 initializing by names for more readable

struct mystuct ms2 = {1, 2}; // general initializing by values

struct mystuct ms3 = {a:1, b:2}; // obsolete initializing by names

PS: чаще использую инициализацию по значению, хотя более читабельно по именам конечно же...

Information

Rating
Does not participate
Location
Россия
Registered
Activity