32bit_me (32bit_me) wrote,
32bit_me
32bit_me

Categories:

Перевод на хабр

Сделал новый перевод для хабра - статья "Профилирование кода с LLVM" https://habr.com/post/417029/.



Ставьте плюсики, пишите комменты, на хабре или здесь.

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

Недостатки такого подхода очевидны. Во-первых, промежуточный код преобразуется бэкендом в машинный код. Алгоритм преобразования может быть крайне сложен и между промежуточным кодом и машинным нет однозначного соответствия. Во-вторых, разные команды выполняются процессором за разное время. В-третьих, время выполнения последовательности команд не равно сумме времен выполнения каждой команды, т.к. процессор выполняет команды конвейерным способом, и у современных x86-64 в одновременной обработке может находиться несколько сотен команд.

Построить точный профайлер, не имея точной потактовой модели процессора, невозможно, а такие модели, если и существуют, не являются бесплатными. Даже ARM предоставляет потактовые симуляторы для своих ядер только на коммерческой основе. Хотя ARM имеет открытое ядро M0, можно было бы попробовать построить точный профайлер хотя бы для него.
Tags: llvm, статьи, хабр
Subscribe

  • МК-90

    1.

  • Электроника МК-90

    1. 2. 3. Продолжение следует

  • Фильм "Твардовский"

    Одинокий космонавт на лунной станции. Но к нему является некто, кого он не хотел бы видеть, но он заключил с ней контракт... Ну какая же лунная…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment