Classification Labels

The suite of benchmarks is designed to test as much features as possible in real programming situations. In order to know what feature is tested in each benchmark, a set of labels has been assigned to them. We can separate these labels into two groups: functional programming features, and erlang features. The meaning of the labels is the following:

Functional Programming Labels

  • IP:
  • The benchmark makes use of interprocedural slicing.
    Examples: B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18
  • CDR:
  • The benchmark contains complex data structures that are intraprocedurally collapsed and expanded.
    Examples: B1
  • CDE:
  • The benchmark contains complex data structures that are interprocedurally collapsed and expanded.
    Examples: B15
  • URF:
  • The benchmark contains functions with unreachable clauses. This happens because there exists a previous clause that always matches. There can be two possibilities of this case. The first one is when all function calls explicitly define their given expression arguments in the program and the clause is unreachable because the previous clauses cover all the possibilities. The second one is when a clause is unreachable because it is a particular case of a previous clause.
    Examples: B5, B6, B14
  • URC:
  • The benchmark contains conditional statements with unreachable clauses.
    Examples: B3, B14
  • UMF:
  • The benchmark defines functions with unmatchable clauses because the pattern matching between the input and the guard parameters will never succeed.
    Examples: B5, B6
  • DC:
  • The benchmark contains dead code statements (e.g., defined variables never used or operation statements with non-used results).
    Examples: B2, B3, B4, B7
  • UP:
  • The benchmark contains functions with unused parameters.
    Examples: B3, B5, B6, B7, B11, B12, B14
  • NCF:
  • The benchmark contains defined functions that are not needed to reach the slicing criterion.
    Examples: B1, B2, B6, B11, B14

Erlang Language Labels

  • HOF:
  • The benchmark makes use of higher-order functions.
    Examples: B2
  • AF:
  • The benchmark defines and uses anonymous functions.
    Examples: B2, B15
  • RC:
  • The benchmark defines and uses recursive calls.
    Examples: B1, B8, B10, B12, B13, B16, B17, B18
  • LC:
  • The benchmark uses list comprehensions.
    Examples: B4, B12, B15
  • Char:
  • The benchmark makes use of char syntax.
    Examples: B12
  • Block:
  • The benchmark defines block structures.
    Examples: B4
  • Rem:
  • The benchmark contains remote procedure calls to functions with non-available code.
    Examples: B1, B4, B10, B12, B15, B16, B17, B18