Giter Club home page Giter Club logo

openscience's Introduction

GenTree

This repository contains the source code and experiment data for the paper GenTree: Using Decision Trees to Learn Interactions for Configurable Software.

Repository Structure

  • benchmarks: testsuites and configuration files for all benchmarks presented in the paper
  • exp-data: raw benchmark resutls
  • gentree-src: the GenTree source code (written in C++).

Building GenTree

GenTree uses the CMake build system and requires the following external libraries:

To build GenTree, runs:

mkdir build && cd build
cmake ..
make

Running GenTree

To run the example in the Illustration section, use

./gentree -J2 -cx -BF @ex_paper

To run the example with the full config space, use

./gentree -J2 -cx -BF @ex_paper --full

To run otter programs (vsftpd, ngircd), use

./gentree -J2 -cx -YF benchmarks/2/ngircd

(change benchmarks/2 to the correct folder containing benchmark configs)

To run gcov programs (e.g. id), use

./gentree -J2 -cx -GF benchmarks/2/id

(change benchmarks/2 to the correct folder containing benchmark configs; and change conf.gcov file appropriately for executable paths and testsuite directory)

For helps on GenTree CLI options, uses

./gentree --help

Experiment data

  • exp-data/{ls, cat, ...}: GenTree's outputs (11 runs for each program), and optionally a full.txt file containing the results generated using all configuration space.
  • exp-data/Analyze/{stat, mcc, cmin, stat_full}: aggregated experiment data that is used to fill in tables in the paper
    • stat: Table 3. GenTree’s results for the benchmark programs
    • mcc: Table 4. Comparing GenTree to exhaustive runs
    • cmin: Table 6. Minimal Configurations
    • stat_full: Table 7. Comparing GenTree to iGen.
  • exp-data/Analyze_rand: Table 5. Comparing random search to exhaustive runs
  • exp-data/{Analyze_progress, Analyze_progress_rand}: Fig. 10. Progress of GenTree on generating interactions for a subset of benchmark programs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.