Deleted Account
Ioann_
то есть - много липовых вызовов. Ну STL он потому так их много и делает, что универсален. У меня же, случай частный :)
Ioann_
Как то в Москве собеседовался, показал свой код. А там у меня был написан свой std::min.
Anatoly
ты о стратегии увеличения размера при вставке?
Berkus
Как то в Москве собеседовался, показал свой код. А там у меня был написан свой std::min.
более эффективный чем вот эти все глупости со сравнением двух значений?
Ioann_
ты о стратегии увеличения размера при вставке?
Ага, в моем случае - просто бесполезно запрашивать 9 * sizof(T) байт, - просто будет вызван if и выйдет ничего не выделив. Так как уже давно выделено 1 << 18 байт
Anatoly
за то у тебя всегда есть способ спросить вектор, приведет или нет следующая операция вставки к реаллоку
Anatoly
а дальше либо ресерви, либо полагайся на дефолтную стратегию
Anatoly
вообщем, у тебя все инструменты на руках
Anatoly
чтобы тюнинговать процесс
Ioann_
более эффективный чем вот эти все глупости со сравнением двух значений?
Нет, эффективно не причем - не хотел зависимости таскать раз, во вторых название не нравилось у меня min2, min3 есть. А в STL просто min. И они ко мне так придрались, но не пойму, а что плохого то ? Я ведь переписал не то, что могло бы потом сломаться и пойти не по Стандарту, а мелкую функцию, которая и в африке будет минимумом
Berkus
ну понятно что min2 лучше чем min
Ioann_
Как название - да. А начинка таже. Все тот же пресловутый тернарный оператор, но не совсем - еще STL не может в индекс. То есть ты можешь найти минимум из двух, но вот какой из a и b он - не понятно. Потом приходится писать проверки разные.
Berkus
O_o
Крылатый
Что...
Anatoly
if( a < b ) ....
Ioann_
int a = std::min(b, c)
Anatoly
против bool a_less_b = false; int c = min(a, b, a_less_b); if( a_less_b ) ...
Anatoly
?
Крылатый
Крылатый
Можно же mim на вариадиках
Stanislav
Можно же mim на вариадиках
дак есть на initialzer_list
Stanislav
std::min({1,2,3})
Ioann_
против bool a_less_b = false; int c = min(a, b, a_less_b); if( a_less_b ) ...
Да, так можно. Но вот у меня примерно также и было сделано, но более специфичено и понятно. Тогда не было initializer list
Ioann_
min_element
Жестоко в плане производительности, ну и там еще итератор вроде возвращается.
Stanislav
std::min({1,2,3})
который как раз через min_element работает
Ioann_
Функция min3 - простая, грех тут лишние переработки делать
Ioann_
ее за 2 минуты можно написать, отладить и все. В шляпе :) Понятное дело, что можно как угодно. Но мне кажется, что это довольно быстродейственный и простой способ.
Ioann_
против bool a_less_b = false; int c = min(a, b, a_less_b); if( a_less_b ) ...
Но вот опять же, зачем делать лишнюю проверку if после того как минимум был найден ? Если она уже делалась ?
Berkus
нде
Aidar
Яннп
Matway
Функция min3 - простая, грех тут лишние переработки делать
С двумя или тремя if (или тернарными операторами)?
Олександр
Хотя стоп :)
Aidar
Что оно должно делать то?
Ioann_
If, поскольку требует проверки флагов процессора, не самая быстрая операция. Еще влияет на механизм кеширования данных и на механизм 'правило поворота' - то есть, когда процессор пытается угадать какой из двух вариантов if будет выбран
Ioann_
Те кто думают, что я мелочусь объясняю - я работаю с данными в 10 - 100 млн треугольников в пространстве
Anatoly
без каких либо функций min устанавливающей какое из чисел больше
Aidar
Или на ассемблере кодь
Aidar
Все соптимайзится
Matway
switch
min3 на switch в студию! :)
Ioann_
без каких либо функций min устанавливающей какое из чисел больше
Я согласен полностью, но там была именно функция, ну вот просто такая функция должна быть. А они к ней придрались, сказали мол - не по стандарту я ...
Berkus
ну ведь твоя функция была не в неймспейсе std?
Ioann_
Я у них спросил, а что делать когда свои структуры данных пишу - ждать когда в стандарте появятся, они промолчали и посмеялись ....
Крылатый
Что за трешак?
Ioann_
А я не понимаю, что трешового. Я их собеседование на 5 с + прошел. Меня даже вышмат спрашивали - как искать локальные минимумы, экстремумы и т.п
Matway
Так всё-таки, два или три ветвления? Нагрузка на кэш кода или данных?
Ioann_
два
Aidar
Покажи бенчмарки
Ioann_
Типа замеры результатов :?
Anatoly
да хотя бы тело min2, min3 покажи
Matway
Особенно на двух бранчах, пожалуйста.
Ioann_
У меня была где то презентация, поищу ее :)
Matway
min3.
vladislav
а чем они отличаются? Я про min2, min3...
cyberzx 🇷🇺
количество параметров 2 или 3
cyberzx 🇷🇺
Типа замеры результатов :?
да хотя бы дизассемблер
vladislav
количество параметров 2 или 3
эм, меня одного это смущает?
Ioann_
Ioann_
Ну вот, кажется конкретно с того кода
Ioann_
То, что их не устроило
Ioann_
Еще их очень не устроила функция cosDihedralSqr
Ioann_
Мол, косинус в квадрате возвращается со знаком
Matway
А что есть D1?
Ioann_
Да, я тоже вижу - в данном случае, я остаил все как есть - то есть, это реально тот код, который был показан тогда. D1 тут должен быть TArg
Matway
нет :)
Хмм.. А вопрос-то серьёзный. Пойду обсужу в соседнем чате.