LINUX.ORG.RU

Тест программа функционала C++

 


0

1

Есть clang компилятор, которым пользуюсь для сборки firefox - без Telemetry/Data Reporting/Fingerprinting.

clang compiler, можно собрать с PGO - выбрав нужные опции в конфигурации.

Для сбора данных PGO, разработчики clang, сочли нужным скормить компилятору - не удивляйтесь, код `Hello World' в 3 строки.

Кто пришлёт C++ code на одной странице, с использованием классов, созданием и удалений их, с условными и безусловными переходами, для тренировки компилятора?


Ответ на: комментарий от i-rinat

Clang - компилирует и линкует сам себя, на второй стадии.

BUILD_LTO_PGO=ON

BUILD_DIR='build'
BUILD_DIR_PGO='tools/clang/stage2-instrumented-bins/tools/clang/stage2-bins'

Нужна страница с кодом C++, как можно больше функционала этого языка.

blitz
() автор топика
Ответ на: комментарий от upcFrost

Знаю этого китайца.

Но это - не тот случай.

blitz
() автор топика
#include <vector>
#include <iostream>
using namespace std;
int main() {
  int x; cin >> x;
  vector<int> v; 
  v.push_back(x);
  cout << v[0];
}
vzzo ★★★
()
Ответ на: комментарий от vzzo

Годно и практично.

Можешь ещё ошибок добавить в код? Думаю clang не развалится, просто интересно.

blitz
() автор топика

Я не понял что нужно. Если нужна профильная информация для пересборки самого clang, то сними её со сборки firefox и радуйся жизни, а примеры ы 3 строки не помогут. Если нужна профильная информация для firefox, то вроде как она у разрабов есть, но я в какой-то моммент отключил сборку с pgo (на gcc), т.к. она идёт гораздо дольше, а на глаз изменений не заметил.

alexanius ★★
()
Ответ на: комментарий от alexanius

Нужна тестовая страница, со всевозможными операторами C++, для тренировки PGO clang, во время сборки.

Firefox, в официальной разработке PGO тренируется лишь на тесты JS.

Этого недостаточно, КМК. Есть своя отработанная методика тренировки, включая прохождение и тестов на медия контент - аудио/видео.

Долго ли? Укладываюсь в 20 минут + 2х время компиляции и линковки.

Результат? 20% скоростней в сравнительных тестах официального Firefox.

blitz
() автор топика
Ответ на: комментарий от SuoiCat

Перевёл компилятор и линкер дефолтный на clang.

Исключение - кернел. Он собирается с GCC.

blitz
() автор топика
Ответ на: комментарий от blitz

ты понимаешь, что PGO вообще работает только для простых и линейных приложений? на приложениях, которые имеют много вариантов ветвлений в зависимости от данных, это вообще дохлый номер. может стать даже хуже.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Поясни, пожалуйста, что ты вкладывашеь в свою идею - только для простых и линейных приложений?

Собираю приложения в 2GB исходников. Они простые, задай себе вопрос.

blitz
() автор топика
Ответ на: комментарий от blitz

да при чём тут вес исходников? можно крошечную программку написать с ветвлениями и она не будет оптимизироваться с PGO. читай про основы оптимизации. а ты собрался оптимизировать таким образом большой и сложный софт, который полностью зависит от входных данных.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Большая часть PGO это и есть оптимизация ветвлений - частых случаев засчет редких.

CatsCantFly
()
Ответ на: комментарий от EXL

Благодарю! Но это бенчмарки для уже скомпилированного компилятора.

Хотелось бы - простейший набор, на одной странице.

* инициализации классов и уничтожения
* if (), for ()
* объявления функций и вызова их

для тренировки компилятора в PGO instrumentation.

Clang имеет для тренировки - тот пресловутый `Hello, world!'
Считаю недостаточным, для тренинга всех модулей компилятора.

blitz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.