Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 1.67 KB

README.md

File metadata and controls

41 lines (29 loc) · 1.67 KB

Contents

This repository contains several synthetic benchmarks of exception handling routines, such as exception allocation and throwing, stack unwinding and handler search.

It also has some test cases which can be used to profile the mentioned routines.

Requirements

The code is written in C++14 and Objective C and requies GCC 4.9 or later to compile it.

The benchmarks use PAPI library to read the performance counters. It is available in major Linux distros (for example, libpapi-dev package in Debian)

CMake 3.0 or later is required to build the tests.

Usage

Run make_all.sh to compile and bench.sh to benchmark. The result will be output to result directory.

Rename config.sh.example into config.sh and modify to set custom path to GCC.

Results

The results are avaiable as IPython notebook.

References

  1. Technical Report on C++ Performance TR18015
  2. Itanium C++ ABI: Exception Handling
  3. System V Application Binary Interface. AMD64 Architecture Processor Supplement, v. 0.99.7
  4. DWARF Debugging Information Format. Version 4
  5. Ian Lance Tayolor's blog posts
  1. Exception Handling in LLVM