-
- Кошмар в том что если это не абстрактное ускорение программы, а
оптимизация конкретного участка. В котором есть только 2 вариант:
работает как надо когда правильно оптимизированно и скорость
непримемлема в другом. Опираться на оптимизатор невозможно, нужно
сразу писать на асме. А общая оптимизация не так и важна, либо бы
она была не сильно хуже чем у конкурентов, что собственно llvm
обеспечивает широкому кругу языков. - Kabdim(02.10.2020 12:42)
- Развивая твою мысль дальше, для любой функции опираться на
оптимизатор невозможно, т.к. он даёт не гарантированный результат,
и нужно писать на асме... Однако ж пишут на C++. Последний как раз
и даёт возможность построить промежуточный код для LLVM таким
образом, что он может быть оптимизирован. А программирование где
динамический полиморфизм через таблицу виртуальных функций -- не
даёт (что в таблице не известно -- оптимизатор останавливается и
генерируется исключительно fk0(30 знак., 02.10.2020 13:14)
- Странное развитие, повторю поинты: Kabdim(468 знак., 02.10.2020 17:45)
- Это не совсем так или совсем не так. Иногда нужны средние
показатели. Например, чтоб размер бинарника влезал в flash-память
вообще-то для начала. Или чтоб какой-либо компонент в среднем,
работал попросту с приемлимой скоростью (пример: переключение
программ в телевизоре быстрей, чем за две секунды). И
оптимизирующий компилятор не в этом, так в другом месте даст
хороший средний результат. Вариант же "всё оптимально руками
переписать на C/ассемблере" для ПО со сроками fk0(37 знак., 02.10.2020 18:11)
- А почему ты все время подразумеваешь что я предлагаю всё переписать, хотя явно везде повторяю что тормоза всегда
концентрируется в маленьком участке кода? - Kabdim(02.10.2020 18:14)
- Потому, что бывает, что нет такого кусочка. Бывает когда когда
генерируется по месту, в зависимости от конкретного типа здесь и
сейчас, с помощью ненавистного тебе метапрограммирования. И
получается масса статических функций которые на ура инлайнятся.
Если убрать шаблоны -- можно сделать в лоб, перенеся всё, что делал
компилятор в рантайм. Но и скорость работы такой реализации очень
не понравится. И хуже того её ещё тестировать теперь в рантайме на
всех возможных вариантах fk0(503 знак., 02.10.2020 18:46)
- Можно пример программы которая равномерно использует весь свой код и хотя бы выбивается из закона Парето? - Kabdim(02.10.2020 19:29)
- Потому, что бывает, что нет такого кусочка. Бывает когда когда
генерируется по месту, в зависимости от конкретного типа здесь и
сейчас, с помощью ненавистного тебе метапрограммирования. И
получается масса статических функций которые на ура инлайнятся.
Если убрать шаблоны -- можно сделать в лоб, перенеся всё, что делал
компилятор в рантайм. Но и скорость работы такой реализации очень
не понравится. И хуже того её ещё тестировать теперь в рантайме на
всех возможных вариантах fk0(503 знак., 02.10.2020 18:46)
- А почему ты все время подразумеваешь что я предлагаю всё переписать, хотя явно везде повторяю что тормоза всегда
концентрируется в маленьком участке кода? - Kabdim(02.10.2020 18:14)
- Это не совсем так или совсем не так. Иногда нужны средние
показатели. Например, чтоб размер бинарника влезал в flash-память
вообще-то для начала. Или чтоб какой-либо компонент в среднем,
работал попросту с приемлимой скоростью (пример: переключение
программ в телевизоре быстрей, чем за две секунды). И
оптимизирующий компилятор не в этом, так в другом месте даст
хороший средний результат. Вариант же "всё оптимально руками
переписать на C/ассемблере" для ПО со сроками fk0(37 знак., 02.10.2020 18:11)
- Странное развитие, повторю поинты: Kabdim(468 знак., 02.10.2020 17:45)
- Развивая твою мысль дальше, для любой функции опираться на
оптимизатор невозможно, т.к. он даёт не гарантированный результат,
и нужно писать на асме... Однако ж пишут на C++. Последний как раз
и даёт возможность построить промежуточный код для LLVM таким
образом, что он может быть оптимизирован. А программирование где
динамический полиморфизм через таблицу виртуальных функций -- не
даёт (что в таблице не известно -- оптимизатор останавливается и
генерируется исключительно fk0(30 знак., 02.10.2020 13:14)
- Кошмар в том что если это не абстрактное ускорение программы, а
оптимизация конкретного участка. В котором есть только 2 вариант:
работает как надо когда правильно оптимизированно и скорость
непримемлема в другом. Опираться на оптимизатор невозможно, нужно
сразу писать на асме. А общая оптимизация не так и важна, либо бы
она была не сильно хуже чем у конкурентов, что собственно llvm
обеспечивает широкому кругу языков. - Kabdim(02.10.2020 12:42)