Годный run-time вариант на C во второй главе ускоряет только в 1.6-1.8 раза, против в 3.5-5.3 раза на C++. Если готовы купить в 2-3 раза больше/дороже серверов и заплатить за оборудование вместо 2 млн, 6 млн, то C годный вариант :)
Кстати, если читали внимательно, то и в этой статье сравнивается run-time вариант на C в конце второй главы, который только замедляет выполнение.
В теории выглядит-то много что рациональнее, но на тестах многое сливалось, а значит теории были не верны.
Ну так приведите своё решение с генерацией test_predicate с помощью LLVM в рантайме и результаты тестов, сравним, пример-то простой :)
Вы хоть попробуйте прежде, чем писать :)
Во-первых, у типичных запросов достаточно маленькая селективность, поэтому выгодней делать && с условным переходом, чем &. Аналогично и с записью в массив — быстрее с условным переходом. Этот теоретический шаблонный совет о бездумном избегании условных переходов тянется ещё со времен длиннющих конвейеров.
Во-вторых, ваш вариант возвращает неверное число строк :)
Это помимо множества синтаксических ошибок.
В свое время был написан bench с несколькими десятками вариантов. Так что, чтобы вы ни написали — скорее всего уже проверялось. Но вы ещё попробуйте.
Можно. Только XSLT — это уже не достоинство C. Кстати, напишите такое решение, сравним.
Основной тезис: то, что возможно в C — возможно и в C++, а обратное не верно.
В какой конкретно int они не влезут? Название переменной напишите и ваши расчеты :)
Подобные раскрутки применяются при Index Range Scan после сужения диапазона поиска в высоконагруженных сервисах. Там число полей меняется реже, чем раз в месяц.
А ещё тут нет Data Definition Language (DDL) и API, чтобы сообщить об изменении числа полей.
Это пример решения на C++ конкретной задачи. Но все приемлемые задачи решаются.
Добавляйте ещё раскрутки по числу полей и числу типов, если не лень ждать компиляции :)
Кстати, если читали внимательно, то и в этой статье сравнивается run-time вариант на C в конце второй главы, который только замедляет выполнение.
Ну так приведите своё решение с генерацией test_predicate с помощью LLVM в рантайме и результаты тестов, сравним, пример-то простой :)
Во-первых, у типичных запросов достаточно маленькая селективность, поэтому выгодней делать && с условным переходом, чем &. Аналогично и с записью в массив — быстрее с условным переходом. Этот теоретический шаблонный совет о бездумном избегании условных переходов тянется ещё со времен длиннющих конвейеров.
Во-вторых, ваш вариант возвращает неверное число строк :)
Это помимо множества синтаксических ошибок.
В свое время был написан bench с несколькими десятками вариантов. Так что, чтобы вы ни написали — скорее всего уже проверялось. Но вы ещё попробуйте.
Основной тезис: то, что возможно в C — возможно и в C++, а обратное не верно.
Подобные раскрутки применяются при Index Range Scan после сужения диапазона поиска в высоконагруженных сервисах. Там число полей меняется реже, чем раз в месяц.
Это пример решения на C++ конкретной задачи. Но все приемлемые задачи решаются.
Добавляйте ещё раскрутки по числу полей и числу типов, если не лень ждать компиляции :)