All Projects → Viladoman → Compilescore

Viladoman / Compilescore

Licence: mit
Visual Studio extension and standalone app for build times and compilation data visualization.

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Compilescore

Vector
➿ A supercharged std::vector implementation (minus Allocator)
Stars: ✭ 118 (-12.59%)
Mutual labels:  clang, visual-studio
clangbuilder
Building Clang ♡ Utility and Environment
Stars: ✭ 101 (-25.19%)
Mutual labels:  visual-studio, clang
Sol2
Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
Stars: ✭ 2,791 (+1967.41%)
Mutual labels:  clang, visual-studio
ci playground
Playground for Cloud CI development for C++
Stars: ✭ 23 (-82.96%)
Mutual labels:  visual-studio, clang
Croaring
Roaring bitmaps in C (and C++)
Stars: ✭ 735 (+444.44%)
Mutual labels:  clang, visual-studio
Llvm Vs2017 Integration
MSBuild 15.0 Toolset integration for multiple LLVM (From v5 to v8)
Stars: ✭ 84 (-37.78%)
Mutual labels:  clang, visual-studio
FrameOfReference
C++ library to pack and unpack vectors of integers having a small range of values using a technique called Frame of Reference
Stars: ✭ 36 (-73.33%)
Mutual labels:  visual-studio, clang
Boomerang
Boomerang Decompiler - Fighting the code-rot :)
Stars: ✭ 265 (+96.3%)
Mutual labels:  clang, visual-studio
Ci helloworld
A simple example of how to setup a complete CI environment for C and C++
Stars: ✭ 357 (+164.44%)
Mutual labels:  clang, visual-studio
Pfr
std::tuple like methods for user defined types without any macro or boilerplate code
Stars: ✭ 896 (+563.7%)
Mutual labels:  clang, visual-studio
Moderncppci
This is an example of doing a Modern C++ project with CI
Stars: ✭ 109 (-19.26%)
Mutual labels:  clang, visual-studio
Servicestackvs
ServiceStackVS - Visual Studio extension for ServiceStack
Stars: ✭ 117 (-13.33%)
Mutual labels:  visual-studio
Metareflect
Metareflect is a lightweight reflection system for C++, based on LLVM and Clangs libtooling.
Stars: ✭ 125 (-7.41%)
Mutual labels:  clang
Selectnextoccurrence
A Visual Studio Extension that selects the next occurrences of the current selection and adds multiple cursors for editing
Stars: ✭ 129 (-4.44%)
Mutual labels:  visual-studio
Monokai Vs 2015
Monokai theme for Visual Studio 2015/2017
Stars: ✭ 116 (-14.07%)
Mutual labels:  visual-studio
Unreal Library
A decompiler library for Unreal packages such as .upk and .u files, supporting Unreal Engine 1, 2, and 3.
Stars: ✭ 123 (-8.89%)
Mutual labels:  visual-studio
Dainty Vs
Dainty for Visual Studio – A color theme generator using Lab color space
Stars: ✭ 115 (-14.81%)
Mutual labels:  visual-studio
Linqbridgevs
Dumps the content of variables during debugging in Visual Studio to LINQPad
Stars: ✭ 114 (-15.56%)
Mutual labels:  visual-studio
Hmap
hmap is a command line tool written in Swift to work with Clang header maps produced by Xcode.
Stars: ✭ 110 (-18.52%)
Mutual labels:  clang
Codeatlasvsix
A graph-based code navigation plugin for Visual Studio
Stars: ✭ 133 (-1.48%)
Mutual labels:  visual-studio

CompileScore

VisualStudio extension and utilities used to display and highlight compilation profiling data. Know the real compilation cost of your code directly inside Visual Studio. Keep the compile times in check.

MarketPlace Donate

Download latest VSIX from the Visual Studio Marketplace

Download latest Data Extractor Executable

Motivation

Compile times are one of the most important things that affect productivity and iterations while developing in C/C++. Slow compile times can be very frustrating, as they are usual case scenarios in big code productions. Being able to identify which pieces are expensive in the same place you code is key in order to keep tech debt under control.

Features

Build and Profile

Build And Profile

Text Highlight on include costs

Highlight screenshot

Tool window with full project aggregated data

Overview image

Detailed Timeline Graph for each translation unit

Timeline image

Double-click any entry in the compile score window to open its timeline.

Navigation controls:

  • Zoom: Control + Mouse Wheel
  • Scroll: Middle mouse press and drag

Standalone App

This repository also contains a standalone app with the same visualization and code as the VS extension. It can prove useful to compare results or open reports without having to open Visual Studio.

The app needs to be build. The solution can be found at CompileScore/WPF/CompileScoreWPF.sln.

How it works

The main idea is to get the C++ compiler to output a trace for what happened during the build. We can then aggregate all that data using the Data Extractor in this repository, and consume it with the VS plugin or the standalone app.

The data extraction is an independent process in order to allow things like building the score file on a build server and consume it remotely. This can be useful in big codebases where we want the production floor to just use the reports from last night inside VS without having to profile locally.

pipeline flow

In the VS extension options there is a field to tell the plugin where to find the report file (this is next to the solution file or root folder by default).

For more information check the Score Generation Page.

Documentation

Building the Project

The Release workflow action contains a step by step process for building the Data Extractor, the VISX and the Standalone App.

Several Test Projects have been included in the repository.

References

Related

If you're not using Visual Studio but are still interested in the data aggregation, you can use SeeProfiler, a standalone C++ compiler profiler which aggregates all the exported data from clang for a global view.

Contributing

This project is open to code contributions.

If you found this extension useful you can always buy me a cup coffee.

paypal

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].