A developer-focused tool that visualizes Clang/LLVM optimization failures in HTML to help improve C++/Rust code performance.
OptView2 is a Python-based tool that processes optimization records generated by Clang and other LLVM-based compilers to create HTML visualizations of optimization failures in source code. It helps developers identify and address performance bottlenecks by highlighting where the compiler could not apply optimizations, making complex compiler data accessible and actionable.
C++ and Rust developers working with Clang, LLVM, or compatible compilers who need to analyze and improve the optimization of their code, particularly in large projects where manual inspection of compiler output is impractical.
Developers choose OptView2 because it focuses exclusively on optimization failures, ignores system headers, and provides an interactive, sortable HTML interface that simplifies navigating and understanding compiler remarks, unlike the original LLVM opt-viewer which targets compiler writers.
User-oriented fork of LLVM's opt-viewer
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Filters and displays only optimization failures, reducing noise and highlighting actionable performance issues, as emphasized in the philosophy.
Automatically ignores system headers to concentrate analysis on user-written code, improving relevance and reducing clutter.
Provides a sortable and resizable index table in the HTML output, making it easier to navigate through optimization issues in large projects.
Includes a '--split-top-folders' option to handle memory issues by processing subfolders separately, supporting analysis of codebases like CPython and OpenCV.
Can take over an hour for large projects, and speed heavily depends on PyYAML with libyaml; without it, parsing is significantly slower, as noted in the performance section.
Requires Python 3.8+, Clang, and optional libyaml installation, with virtual environment setup recommended, adding complexity for some users.
Only works with LLVM-based compilers like Clang, rustc, flang, and ldc, excluding GCC and other compilers without LLVM backend.