Browse Source

Add benchmarks (#42)

* Add benchmarks
anonswap
Ofek Lev 6 years ago
committed by GitHub
parent
commit
cc8e3f8cfe
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 34
      .travis.yml
  2. 52
      tests/test_bench.py
  3. 6
      tox.ini

34
.travis.yml

@ -39,37 +39,37 @@ matrix:
env: TOXENV=style BUILD_LINUX_WHEELS=1
services: docker
- python: 2.7
env: TOXENV=py27
env: TOXENV=py27,bench
- python: 3.5
env: TOXENV=py35
env: TOXENV=py35,bench
- python: 3.6
env: TOXENV=py36
env: TOXENV=py36,bench
- python: 3.7
env: TOXENV=py37
env: TOXENV=py37,bench
- python: pypy3
env: TOXENV=pypy3
env: TOXENV=pypy3k,bench
# PyPy3 isn't yet available for Xenial
dist: trusty
- os: osx
language: generic
osx_image: xcode10.1
python: 2.7
env: TOXENV=py27 TRAVIS_PYTHON_VERSION=2.7
osx_image: xcode10.1
env: TOXENV=py27,bench TRAVIS_PYTHON_VERSION=2.7
- os: osx
language: generic
osx_image: xcode10.1
python: 3.5
env: TOXENV=py35 TRAVIS_PYTHON_VERSION=3.5
osx_image: xcode10.1
env: TOXENV=py35,bench TRAVIS_PYTHON_VERSION=3.5
- os: osx
language: generic
osx_image: xcode10.1
python: 3.6
env: TOXENV=py36 TRAVIS_PYTHON_VERSION=3.6 NEED_SSL_FIX=true
osx_image: xcode10.1
env: TOXENV=py36,bench TRAVIS_PYTHON_VERSION=3.6 NEED_SSL_FIX=true
- os: osx
language: generic
osx_image: xcode10.1
python: 3.7
env: TOXENV=py37 TRAVIS_PYTHON_VERSION=3.7
osx_image: xcode10.1
env: TOXENV=py37,bench TRAVIS_PYTHON_VERSION=3.7
before_install:
- chmod +x .travis/build-linux-wheels.sh
@ -82,12 +82,14 @@ install:
- .travis/prepare_windows_build.sh
- source .travis/install.sh
after_success:
- .travis/upload_coverage.sh
script:
# Reuse test environments for benchmarks
- export TESTENV=$(python -c "import os;print(os.getenv('TOXENV', 'bench').split(',')[0])")
- tox
after_success:
- .travis/upload_coverage.sh
deploy:
- provider: script
skip_cleanup: true

52
tests/test_bench.py

@ -0,0 +1,52 @@
from coincurve import PrivateKey, PublicKey, verify_signature
from .samples import PRIVATE_KEY_BYTES, PUBLIC_KEY_COMPRESSED, MESSAGE, SIGNATURE
def test_verify_signature_util(benchmark):
benchmark(verify_signature, SIGNATURE, MESSAGE, PUBLIC_KEY_COMPRESSED)
def test_private_key_new(benchmark):
benchmark(PrivateKey)
def test_private_key_load(benchmark):
benchmark(PrivateKey, PRIVATE_KEY_BYTES)
def test_private_key_sign(benchmark):
private_key = PrivateKey(PRIVATE_KEY_BYTES)
benchmark(private_key.sign, MESSAGE)
def test_private_key_sign_recoverable(benchmark):
private_key = PrivateKey(PRIVATE_KEY_BYTES)
benchmark(private_key.sign_recoverable, MESSAGE)
def test_private_key_ecdh(benchmark):
private_key = PrivateKey(PRIVATE_KEY_BYTES)
benchmark(private_key.ecdh, PUBLIC_KEY_COMPRESSED)
def test_public_key_load(benchmark):
benchmark(PublicKey, PUBLIC_KEY_COMPRESSED)
def test_public_key_load_from_valid_secret(benchmark):
benchmark(PublicKey.from_valid_secret, PRIVATE_KEY_BYTES)
def test_public_key_format(benchmark):
public_key = PublicKey(PUBLIC_KEY_COMPRESSED)
benchmark(public_key.format)
def test_public_key_point(benchmark):
public_key = PublicKey(PUBLIC_KEY_COMPRESSED)
benchmark(public_key.point)
def test_public_key_verify(benchmark):
public_key = PublicKey(PUBLIC_KEY_COMPRESSED)
benchmark(public_key.verify, SIGNATURE, MESSAGE)

6
tox.ini

@ -2,7 +2,7 @@
skip_missing_interpreters = true
envlist =
py{27,35,36,37},
pypy3,
pypy3k,
bench,
style
@ -18,9 +18,11 @@ commands =
coverage report -m
[testenv:bench]
skip_install = true
envdir = {toxworkdir}/{env:TESTENV:bench}
commands =
python -c "import shutil; shutil.move('coincurve', '_coincurve')"
pytest -v --benchmark-only --benchmark-cprofile=tottime
pytest -v --benchmark-only --benchmark-sort=name --benchmark-cprofile=tottime
python -c "import shutil; shutil.move('_coincurve', 'coincurve')"
[testenv:style]

Loading…
Cancel
Save