Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語
Справка Scilab >> Development tools > bench_run


Launches benchmark tests


[modutests_names, elapsed_time, nb_iterations] = bench_run()
[modutests_names, elapsed_time, nb_iterations] = bench_run(module[, test_name[, options, [exportToFile]])
[modutests_names, elapsed_time, nb_iterations] = bench_run(path_to_module[, test_name[, options, [exportToFile]])



a vector of string. Contains the names of a Scilab modules to benchmark.


a vector of string. Contains the paths to directories of modules to test. If "/path/to/directory" is given as input parameter, tests are retrieved in the subdirectory /path/to/directory/tests/benchmarks .Used for homemade benchmarks.


a vector of string. Contains the names of the tests to perform.

The name of a test is its filename without .tst. If several modules or directory are given as first input parameter, scans for tests in each of these modules or directory.


a vector of string

  • "list": list of the benchmark tests (test_name) available in a module

  • "help": displays some examples of use in the Scilab console

  • "nb_run=value": runs each benchmark value times ; by default bench_run runs 10000 times the code between BENCH START and BENCH END tags (see below). Overrides any BENCH NB RUN specified in the benchmark test files.


a single string

File path to the result of the bench_run in xml format. By default, or if "", "[]" or [] is given, the output directory is TMPDIR/benchmarks/.

If exportToFile is a directory, creates a timestamped output file is the directory, otherwize creates the file exportToFile. If the file could not be created a warning is issued and the file is created under TMPDIR/benchmarks/ instead.


a N-by-2 matrix of strings

the first column lists the modules tested by bench_run, the second column lists the names of the benchmarks


a vector of doubles

the execution time for each benchmark


a vector of doubles of size N

the number of iterations of respective test


Performs benchmark tests, measures execution time and produces a report about benchmark tests.

Searches for .tst files in benchmark test library or input parameter path under tests/benchmark subdirectory, executes them 10000 times and displays a report about execution time.

Special tags may be inserted in the .tst file, which help to control the processing of the corresponding test. These tags are expected to be found in Scilab comments.

These are the available tags :

  • <-- BENCH NB RUN : 10 -->

    By default, this test will be repeated 10 times, unless the "nb_run=###"bench_run(..) option is used. The value given for the flag can be set to any integer value.

  • //    <-- BENCH START -->
    [code to be executed]
    //    <-- BENCH END -->

    Code between these tags will be repeated. Code before will be executed before the repetition, code after will be executed after the repetition. If these are not present, the entire code will be repeated.


Some simple examples of invocation of bench_run

// Launch all tests
// This may take some time...
// bench_run();
// bench_run([]);
// bench_run([],[]);

// Test one or several module

// Launch one or several test in a specified module

// With options
bench_run("string", [], 'nb_run=100');
// results in an output file in the current directory
bench_run("string", [], 'nb_run=100', 'my_output_file.xml');
// results in an output directory, TMPDIR/benchmarks is the default
bench_run("string", [], 'nb_run=100', TMPDIR);

An example of a benchmark file. This file corresponds to the file SCI/modules/linear_algebra/tests/benchmarks/bench_chol.tst.

// =============================================================================
// Scilab ( ) - This file is part of Scilab
// Copyright (C) 2007-2008 - INRIA
//  This file is distributed under the same license as the Scilab package.
// =============================================================================

// Benchmark for chol function

// <-- BENCH NB RUN : 10 -->

a = 0;
b = 0;
a = rand(900, 900, 'n');
a = a'*a;

// <-- BENCH START -->
b = chol(a);
// <-- BENCH END -->

The result of the test


For Loop (as reference) ...........................      33.20 ms [ 1000000 x]

001/001 - [linear_algebra] bench_chol ......................     1233.93 ms [      10 x]

See also

  • test_run — runs unit tests and non-regression tests of a module or in a directory


  • bench_run() can now return its results through the new modutests_names, elapsed_time and nb_iterations output parameters.
  • Exportation of results in XML is now possible
  • Global configuration settings mode(), format(), ieee(), warning() and funcprot() are now protected against tests.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:13:37 CET 2017