psychec
CFGgrind
psychec | CFGgrind | |
---|---|---|
4 | 2 | |
497 | 102 | |
- | - | |
7.5 | 4.6 | |
7 days ago | 4 months ago | |
C++ | C | |
BSD 3-clause "New" or "Revised" License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
psychec
-
The Jotai Benchmark Collection
We, at UFMG, have been working on a methodology to generate benchmarks in C. We have a working collection of benchmarks here with a bit more than 30K executable programs. Benchmarks are single functions mined from open-source repositories. We have designed a domain-specific language to generate inputs for them. We use psyche-c to infer missing types and declarations. We use kcc and AddressSanitizier to filter out as much undefined behavior as possible. We use CFGGrind to check input coverage and to count the number of instructions executed. These benchmarks can be used in many ways: to stress test compilers; to autotune predictive compilation tasks; to analyze the dynamic behavior of programs; to improve compiler optimizations; etc. We have a technical report here.
-
Getting AST of C source code programmatically!
Did you take a look at psyche-C? https://github.com/ltcmelo/psychec
- Psyche: A C front end for implementation of static analysis tools
- adding a C# Roslyn-like API as part of the rewrite of my C compiler frontend project
CFGgrind
-
Tips Performance benchmarks for a custom compiler?
But let me suggest Jotai to you. That's a collection with about 30K C programs. They all run without undefined behavior (as per kcc or frama-C). Each program is self-contained. But each program also runs for a very short time. So, I recommend you use CFGGrind to count the number of instructions executed. CFGGrind can separate instructions per function, and each Jotai benchmark consists of a single function. For instance, to count the total number of instructions executed by function foo, you can do (assuming that profile data was saved into a file called `test.cfg`):
-
The Jotai Benchmark Collection
We, at UFMG, have been working on a methodology to generate benchmarks in C. We have a working collection of benchmarks here with a bit more than 30K executable programs. Benchmarks are single functions mined from open-source repositories. We have designed a domain-specific language to generate inputs for them. We use psyche-c to infer missing types and declarations. We use kcc and AddressSanitizier to filter out as much undefined behavior as possible. We use CFGGrind to check input coverage and to count the number of instructions executed. These benchmarks can be used in many ways: to stress test compilers; to autotune predictive compilation tasks; to analyze the dynamic behavior of programs; to improve compiler optimizations; etc. We have a technical report here.
What are some alternatives?
ImGuiColorTextEdit - Colorizing text editor for ImGui
jotai-benchmarks - Collection of executable benchmarks
OpenMLDB - OpenMLDB is an open-source machine learning database that provides a feature platform computing consistent features for training and inference.
ccache - ccache – a fast compiler cache
timemory - Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
color_coded - A vim plugin for libclang-based highlighting of C, C++, ObjC
Apache Thrift - Apache Thrift
vast - VAST is an experimental compiler pipeline designed for program analysis of C and C++. It provides a tower of IRs as MLIR dialects to choose the best fit representations for a program analysis or further program abstraction.
mgclisp - An S-expression interpreter
minimalloc - A lightweight memory allocator for hardware-accelerated machine learning
warfLang - Perhaps Today is a Good Day to Parse