🦥Alex Fails
В смысле?
я просто в конкарренси начал обучаться с винапишных примитивов
Vitaliy ◀️TriΔng3l▶️
я просто в конкарренси начал обучаться с винапишных примитивов
Ну заборы там в любом случае были во всяких критических секциях же
🦥Alex Fails
это они из java наверняка подцепили
модель памяти в C++11 частично адаптирована из Java. Про это Шипилёв как-то упоминал с пруфами на докладе про конкарренси-баги. Можно загуглить по кэтчфразам "Я твой JVM конкарренси шатал" и "Доклад содержит внутренности JVM и боль (уходите)"
Vsevolod
@AlexFails чувствую, доклад хорош!
🦥Alex Fails
@AlexFails чувствую, доклад хорош!
ага, я когда-то кидал фотку слайда
🦥Alex Fails
ну, это Шипилёв. Он любит про потроха Java рассказывать. Там у него много нативщины и шуток такого рода
Vsevolod
@antoshkka нет, настолько там вряд ли все улучшится, учитывая, что мне не нравятся ни стандартные хеши, ни стандартные строки, ни стандартные векторы :(
Vsevolod
нет, я люблю все делать оптимально
Evgenii
нет, я люблю все делать оптимально
вопрос в том, что оптимизировать
🦥Alex Fails
https://shipilev.net/talks/jeeconf-May2013-concurrency.pdf - это чутка цензурированные слайдики, но суть та же
Aidar
нет, я люблю все делать оптимально
Учитывая zero overhead principle то
🦥Alex Fails
Aidar
очень возможно, но не могу утверждать
Модель памяти си++ появилась в 11 году, джавы в 11 году
🦥Alex Fails
ну, в общем, ты понел, д. пруфца можно позже поискать (ща только домой пришел)
Vsevolod
хеш таблицы однозначно узкое место
Vsevolod
векторы - однозначно нет
Vsevolod
в профе я вижу g_hash_table_lookup и вижу luajit gc
Vsevolod
первое я могу оптимизировать, перейдя на плюсы с инлайнингом быстрых хеш функций, а второе могу оптимизировать семантически
Aidar
Я ничего не понял
Aidar
В любом случае это ваще не относится к плюсам
🦥Alex Fails
это про C + Lua JIT
Viacheslav
Везёт вам, у вас LuaJIT есть. А у нас половина машин — долбаный Солярис Спарк. Приходится с обычной Lua выжимать всё, что можно 😔
Vitaliy ◀️TriΔng3l▶️
Везёт вам, у вас LuaJIT есть. А у нас половина машин — долбаный Солярис Спарк. Приходится с обычной Lua выжимать всё, что можно 😔
А там используются какие-нибудь упоротые оптимизации, или тупо компилируется как с -O0?
Vitaliy ◀️TriΔng3l▶️
Запили Lua поверх LLVM)
Vsevolod
под спарк есть же luajit
Vsevolod
а хотя нет, это я с павером попутал
Viacheslav
Ага.
Viacheslav
А там используются какие-нибудь упоротые оптимизации, или тупо компилируется как с -O0?
Не, мы не настолько больные, чтобы с O0 собирать, иначе наша ежедневная отчётность до клиентов никогда не дойдёт.
Viacheslav
Ну судя по документации, LuaJIT без JIT — это хорошо оптимизированная Lua 5.1. Да, оно чуть быстрее, но не настолько, чтобы был смысл переписывать код, завязанный уже на фичи Lua 5.2.
Vsevolod
нет, в luajit есть все фичи 5.2
Viacheslav
Не все.
Vsevolod
изначально там срач начался из-за bitops
Vsevolod
которые не хотели в lua
Vsevolod
вот в 5.3 есть integer, и это боооль
Vsevolod
но портировать luajit на новый бэкэнд - это надо либо звать Майка, либо иметь возможность платить команде разработчиков довольно долгое время (так, вроде, впилили мипс)
Viacheslav
изначально там срач начался из-за bitops
Там работа с environments другая, например.
Viacheslav
но портировать luajit на новый бэкэнд - это надо либо звать Майка, либо иметь возможность платить команде разработчиков довольно долгое время (так, вроде, впилили мипс)
Я лучше подожду, пока нужные нам сервисы под Линукс адаптируют. А пока что потоков на Спарках много, и софт хорошо параллелится, так что мы не особо страдаем. Всё приемлемо быстро получается.
Vsevolod
я больше думаю про ffi
Viacheslav
Ну это да, было бы хорошо.
Vsevolod
потому что переключение lua<->c - это дорого и больно
Viacheslav
Мы ещё никак swig до конца не выкинем. Поэтому какой-нибудь безобидный blah:field(something) может сходить в С++ за полем, которое по значению возвращается, потом выделить память через new, скопировать туда объект, а указатель в lua_newuserdata положить.
Viacheslav
Память-то дёшево очень выделять и освобождать на каждый чих... В общем ладно, не буду о наболевшем 😂
Viacheslav
Хуже только стрим создавать, чтобы число в строку перевести.
🦥Alex Fails
Хуже только стрим создавать, чтобы число в строку перевести.
собственно, это хорошо пофиксили в 17-м стд: from_chars/to_chars
Viacheslav
А у нас Солярис поддерживать надо, поэтому С++03 😂
Matwey
А у нас Солярис поддерживать надо, поэтому С++03 😂
Во, я знал что где-то есть такой человек
Viacheslav
Который обёртка над strtol и так далее.
Surreal
Он, правда, через sprintf работает.
Viacheslav
Нет, не sprintf.
Aidar
Да кто сказал что он ваще как-то работает
Aidar
Он просто есть
Aidar
Все
Viacheslav
Проблема to_string в том, что он абсолютно непригоден для чисел с плавающей точкой.
Viacheslav
Не знаю, кто это в таком виде в стандарт пустил 😔
Berkus
а с плавающей запятой? а с утонувшей?
Viacheslav
Хвостик у запятой слишком много весит, вот и утонула. А точка нормально плавает.
🦥Alex Fails
Хуже только стрим создавать, чтобы число в строку перевести.
у мну еще был шаблонный костыль для NDK с этим to_string, который создавал стримы 😂 🙈 (github.com/leha-bot/to_string)
🦥Alex Fails
А потом починили эти строчки, и стало хорошо
🦥Alex Fails
вообще качество NDK вызывает кучу вопросов по поводу квалификации инженеров гугла(
🦥Alex Fails
вообще качество NDK вызывает кучу вопросов по поводу квалификации инженеров гугла(
еще можно предположить, что там мало людей в команде, и они плохо его тестят
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, там был баг где-то
🐙 Antony
@antoshkka нет, настолько там вряд ли все улучшится, учитывая, что мне не нравятся ни стандартные хеши, ни стандартные строки, ни стандартные векторы :(
Расскажите пожалуйста, чем вам не нравятся стандартные строки и стандартный вектор? Меня в них тоже не радует пара вещей, может у нас список совпадает?
Vitaliy ◀️TriΔng3l▶️
В btAlignedObjectArray в Bullet сделали костыль resizeNoInitialize)
Vitaliy ◀️TriΔng3l▶️
И правильно сделали
Ignat
Чё вообще
Ignat
Зачем reserve увеличивать size