Sergey
смотря что ты хочешь оптимизировать
Sergey
ты хочешь оптимизаций на уровне llvm аля мидлвар?
Andrei
Попробую описать словами, звучит может странно, но так проще всего объяснить.
Andrei
В общем берем программу на плюсах.
Andrei
И считаем, что она вся помечена как constexpr
Andrei
Всё что можно вычислить в компайлтайме там и вычисляется.
Andrei
В частности с точки зрения конструкций языка у нас есть и структуры и методы и наследование
Andrei
И виртуальные функции.
Andrei
Но если мы можем где-то от этого избавиться — мы избавляемся.
Andrei
Т.е. используем максимально данные из компайлтайма.
Andrei
В частности у структур например если видим что поле используется только статически, вообще его выдернем из структуры.
Andrei
Статически я имею в виду, что достоверно известно, что будет происходить с таким-то мембером каждого объекта.
Sergey
у структур так не всегда можно сделать
Sergey
если структура куда-то передается
Sergey
хотя это на месте надо смотреть
Sergey
но тут на уровне фронта вполне себе можно реализовать
Andrei
Соотв все метапрограммирование, которое в плюсах пишется шаблонами то есть фактически на другом языке
Andrei
В этом языке пишется на том же синтаксисе что и динамический код
Andrei
А компилятор это всё соптимизирует.
Andrei
Со структурами не так все просто. Иногда нам не нужна вся структура.
Andrei
Тогда компилятор подставит только адреса полей.
Andrei
И т.д.
Andrei
Виртуальные функции тоже несколько видоизменятся.
Andrei
Побычтрее будет чем лукап в таблицу.
Sergey
да уж
Sergey
совсем не просто
Sergey
что из этого реализовано?
Andrei
что из этого реализовано?
Первые шаги. Есть формально описание грамматики, по ней построен LL парсер. Есть формальное описание того как из языка выского уровня переводить в промежуточную restricted версию языка. Есть рабочий интерпретатор, который все фичи поддерживает. Есть self-hosted интерпретатор для restricted версии.
Vladislav
В частности у структур например если видим что поле используется только статически, вообще его выдернем из структуры.
довольно опасно - если мы не помечаем в коде места, которые обязаны быть устранены из рантайма, любое изменение может привести к внезапному кардинальному изменению производительности (если компилятор вдруг решит что что-то соптимизировать больше нельзя)
Denis
Не сказал бы, что это опасно
Denis
Нет же ничего страшного, что цикл не сможет развернуться и векторизироваться, если добавить в него if
Vladislav
Нет же ничего страшного, что цикл не сможет развернуться и векторизироваться, если добавить в него if
а если в структуре внезапно появится новое поле, которое раньше убиралось в compile-time?
Denis
Ну всё, добавишь код, заново скомпилишь, уберётся оптимизация
Andrei
Именно так.
Andrei
То есть за счет того, что мы убиваем любой ABI внутри мы получаем возможно более оптимальный код.
Михаил
Как сказать apache ab, чтобы при указании прокси сервера и https запроса, сначала посылал CONNECT? На прокси приходит поток шифрованного трафика и что с ним делать не понятно.
Anonymous
перенаправлять?
Михаил
Прокси не знает, куда перенаправлять непонятный набор байт. Для этого должен прийти запрос CONNECT.
Anonymous
на сокетах делаешь?
Михаил
на сокетах делаешь?
Эээ, как бы больше не на чем.
Anonymous
😁😁👍👍
Shakhzod
Ребята, нужна помощь. Надо собрать проект на Линуксе и протестить запускается ли
Shakhzod
Кто поможет?
Detur
гуевый?
Shakhzod
да.
Detur
тогда не помогу
Shakhzod
Короче, проект такой Обертка libSDL2 на objective-c. Кроссплатформенная. Только компилятор другой (fork clang). Надо попробовать скопилить и запустить.
Shakhzod
ОпенСорс
Михаил
Запускай виртуальную машину с линуксом и тестируй.
Shakhzod
256kb/s
Shakhzod
😞
Anonymous
😆😆😆😆
Михаил
256kb/s
Но..., это даже не 4кб/с через модем и с разрывами.
Evgenii
Всё что можно вычислить в компайлтайме там и вычисляется.
Думалось, что хороший оптимизирующий компилятор С так и делает, не?
Andrei
Ни плюсовый, ни тем более сишный.
Alexander
может кого заинтересует.... https://www.youtube.com/watch?v=kXrVtaKDKvI&t=0s
Alexander
#video #cpp #mailru
Alexander
разбираются примеры, есть как средней сложности, так и сложные примеры.
Alexander
для кого-тосложно, для кого то нет))
Aidar
Ладно пролистал ничего для себя не наше
Anonymous
😆😆😆😆
Richard
может кого заинтересует.... https://www.youtube.com/watch?v=kXrVtaKDKvI&t=0s
Попробовал я этот курс глянуть и бросил. Как лектор он не очень.
Kirill
я сейчас слушаю, какой же он скучный, ппц
Kirill
сразу лекции в универе вспомнил
Square
#CPP #bjarne #stroustrup
Square
Stanislav
😁 опередил
Square
:)
Vladislav
Концепты!
Крылатый
Коньцепты!
Alexander
концептов же не будет в с++17. так?
Vladislav
не будет(
Kirill
агак(
Крылатый
Ничего не будет.
Крылатый
Всё тлен.
Vladislav
кина не будет