🦥Alex Fails
В смысле?
я просто в конкарренси начал обучаться с винапишных примитивов
🦥Alex Fails
это они из java наверняка подцепили
модель памяти в C++11 частично адаптирована из Java. Про это Шипилёв как-то упоминал с пруфами на докладе про конкарренси-баги. Можно загуглить по кэтчфразам "Я твой JVM конкарренси шатал" и "Доклад содержит внутренности JVM и боль (уходите)"
🦥Alex Fails
🦥Alex Fails
Aidar
Vsevolod
@AlexFails чувствую, доклад хорош!
🦥Alex Fails
ну, это Шипилёв. Он любит про потроха Java рассказывать. Там у него много нативщины и шуток такого рода
Vsevolod
@antoshkka нет, настолько там вряд ли все улучшится, учитывая, что мне не нравятся ни стандартные хеши, ни стандартные строки, ни стандартные векторы :(
Aidar
Vsevolod
нет, я люблю все делать оптимально
Evgenii
🦥Alex Fails
https://shipilev.net/talks/jeeconf-May2013-concurrency.pdf - это чутка цензурированные слайдики, но суть та же
🦥Alex Fails
🦥Alex Fails
ну, в общем, ты понел, д. пруфца можно позже поискать (ща только домой пришел)
Vsevolod
хеш таблицы однозначно узкое место
Vsevolod
векторы - однозначно нет
Aidar
Vsevolod
в профе я вижу g_hash_table_lookup и вижу luajit gc
Vsevolod
первое я могу оптимизировать, перейдя на плюсы с инлайнингом быстрых хеш функций, а второе могу оптимизировать семантически
Aidar
Я ничего не понял
Aidar
В любом случае это ваще не относится к плюсам
🦥Alex Fails
это про C + Lua JIT
Viacheslav
Везёт вам, у вас LuaJIT есть. А у нас половина машин — долбаный Солярис Спарк. Приходится с обычной Lua выжимать всё, что можно 😔
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
Запили Lua поверх LLVM)
Vsevolod
под спарк есть же luajit
Vsevolod
а хотя нет, это я с павером попутал
Viacheslav
Ага.
Vitaliy ◀️TriΔng3l▶️
Viacheslav
Ну судя по документации, LuaJIT без JIT — это хорошо оптимизированная Lua 5.1. Да, оно чуть быстрее, но не настолько, чтобы был смысл переписывать код, завязанный уже на фичи Lua 5.2.
Vsevolod
нет, в luajit есть все фичи 5.2
Viacheslav
Не все.
Vsevolod
изначально там срач начался из-за bitops
Vsevolod
которые не хотели в lua
Vsevolod
вот в 5.3 есть integer, и это боооль
Vsevolod
но портировать luajit на новый бэкэнд - это надо либо звать Майка, либо иметь возможность платить команде разработчиков довольно долгое время (так, вроде, впилили мипс)
Vsevolod
я больше думаю про ffi
Viacheslav
Ну это да, было бы хорошо.
Vsevolod
потому что переключение lua<->c - это дорого и больно
Viacheslav
Мы ещё никак swig до конца не выкинем. Поэтому какой-нибудь безобидный blah:field(something) может сходить в С++ за полем, которое по значению возвращается, потом выделить память через new, скопировать туда объект, а указатель в lua_newuserdata положить.
Viacheslav
Память-то дёшево очень выделять и освобождать на каждый чих... В общем ладно, не буду о наболевшем 😂
Viacheslav
Хуже только стрим создавать, чтобы число в строку перевести.
Viacheslav
А у нас Солярис поддерживать надо, поэтому С++03 😂
Matwey
Surreal
Viacheslav
Который обёртка над strtol и так далее.
Surreal
Он, правда, через sprintf работает.
Viacheslav
Нет, не sprintf.
Aidar
Да кто сказал что он ваще как-то работает
Aidar
Он просто есть
Aidar
Все
Viacheslav
Проблема to_string в том, что он абсолютно непригоден для чисел с плавающей точкой.
Viacheslav
Не знаю, кто это в таком виде в стандарт пустил 😔
Berkus
а с плавающей запятой? а с утонувшей?
Viacheslav
Хвостик у запятой слишком много весит, вот и утонула. А точка нормально плавает.
🦥Alex Fails
А потом починили эти строчки, и стало хорошо
🦥Alex Fails
вообще качество NDK вызывает кучу вопросов по поводу квалификации инженеров гугла(
🦥Alex Fails
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
Типа нам он больше не нужен)
Vitaliy ◀️TriΔng3l▶️
Но у неё, кстати, прототип был, если я не ошибаюсь, как у qsort_s, а не qsort_r, даже
Vitaliy ◀️TriΔng3l▶️
Вот этот коммит https://android.googlesource.com/platform/bionic/+/android-2.1_r2%5E!/
Vitaliy ◀️TriΔng3l▶️
А вот NDK-Build мне нравится очень
Vitaliy ◀️TriΔng3l▶️
На CMake вообще не хочется переходить с неё
🦥Alex Fails
я не юзал бионик, я юзал либу из termux, там был баг где-то
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
В btAlignedObjectArray в Bullet сделали костыль resizeNoInitialize)
Vitaliy ◀️TriΔng3l▶️
И правильно сделали
Ignat
Чё вообще
Ignat
Зачем reserve увеличивать size