Official Py4J Benchmark Suite
Python Java
Latest commit 8f23ef3 Jul 31, 2016 @bartdag updated py4j-master config
Permalink
Failed to load latest commit information.
java
.gitignore
LICENSE.txt
README.rst
circle.yml
py4jbench.py
tox.ini

README.rst

Py4J-Benchmark

Version:0.1.0

This is the official benchmark suite for Py4J. It is available as a command line client and integrates with tox for convenience. It outputs the results of the benchmark on standard output and can produce a csv file.

Requirements

  • Python 2.7, 3.4, or 3.5
  • Java 6+
  • Works with Py4J 0.8+
  • Optional: tox

Installation

Clone the repository and invoke the script with python py4jbench.py

Usage

usage: py4jbench.py [-h] [--no-pinned-thread] [--csv-output CSV_OUTPUT]
                    [--append-to-csv] [--javac-path JAVAC_PATH]
                    [--java-path JAVA_PATH] [--max-bytes MAX_BYTES]
                    [--max-iterations MAX_ITERATIONS]
                    [--max-threads MAX_THREADS] [--seed SEED] [--verbose]
                    [--list] [--only [ONLY_BENCHMARKS [ONLY_BENCHMARKS ...]]]
                    [--skip [SKIP_BENCHMARKS [SKIP_BENCHMARKS ...]]]
                    py4j_jar_path

Benchmarks Py4J

positional arguments:
py4j_jar_path         The path to the Py4J jar.

optional arguments:
-h, --help            show this help message and exit
--no-pinned-thread    Test pinned thread ClientServer. Not available before
                        0.10
--csv-output CSV_OUTPUT
                        Where to save a csv output of the benchmark results.
--append-to-csv       Append to the csv file and do not rewrite the header
                        if the file exists.
--javac-path JAVAC_PATH
                        Full path to javac. Otherwise javac is invoked with
                        current PATH
--java-path JAVA_PATH
                        Full path to java. Otherwise java is invoked with
                        current PATH
--max-bytes MAX_BYTES
                        Maximum number of bytes transferred from either sides
--max-iterations MAX_ITERATIONS
                        Maximum number of iterations. Determine the testing
                        time.
--max-threads MAX_THREADS
                        Maximum number of explicitly started threads.
--seed SEED           Seed to use to generate random data.
--verbose             Print information as the benchmark progresses
--list                Lists all benchmark tests
--only [ONLY_BENCHMARKS [ONLY_BENCHMARKS ...]]
                        Run only the selected benchmarks. Can also be
                        set with the PY4J_BENCHMARK_ONLY environment
                        variables.
--skip [SKIP_BENCHMARKS [SKIP_BENCHMARKS ...]]
                        Skip the selected benchmarks. Can also be
                        set with the PY4J_BENCHMARK_SKIP environment
                        variables.

Usage Examples

# Run benchmark on currently installed Py4J
python py4jbench.py --verbose --csv-output report.csv --append-to-csv path/to/py4j0.10.2.1.jar

# List all supported environments
tox --listenvs

# Run benchmark on one environment. Generates report.csv
tox -e py27-py4j092

# Run benchmark on one environment for one test only
export PY4J_BENCHMARK_ONLY=java-instance-creation tox -e py27-py4j092

# Run benchmark on all supported environments. Generates report.csv
tox

LICENSE

Py4J-Benchmark is distributed with the BSD 3-Clause license. See LICENSE.txt for more information.