diff --git a/setup.py b/setup.py index aba4de6c..3905799d 100644 --- a/setup.py +++ b/setup.py @@ -35,6 +35,10 @@ docs_require = [ 'sphinx-rtd-theme>=0.1.9', ] +benchmarks_require = [ + 'line-profiler==1.0', +] + setup( name='BigchainDB', version=version['__version__'], @@ -88,7 +92,7 @@ setup( tests_require=tests_require, extras_require={ 'test': tests_require, - 'dev': dev_require + tests_require + docs_require, + 'dev': dev_require + tests_require + docs_require + benchmarks_require, 'docs': docs_require, }, ) diff --git a/speed-tests/README.md b/speed-tests/README.md new file mode 100644 index 00000000..7b07d338 --- /dev/null +++ b/speed-tests/README.md @@ -0,0 +1,3 @@ +# Speed Tests + +This folder contains tests related to the code performance of a single node. \ No newline at end of file diff --git a/speed-tests/speed_tests.py b/speed-tests/speed_tests.py new file mode 100644 index 00000000..6fb67714 --- /dev/null +++ b/speed-tests/speed_tests.py @@ -0,0 +1,21 @@ +from line_profiler import LineProfiler + +import bigchaindb + + +def speedtest_validate_transaction(): + # create a transaction + b = bigchaindb.Bigchain() + tx = b.create_transaction(b.me, b.me, None, 'CREATE') + tx_signed = b.sign_transaction(tx, b.me_private) + + # setup the profiler + profiler = LineProfiler() + profiler.enable_by_count() + profiler.add_function(bigchaindb.Bigchain.validate_transaction) + + # validate_transaction 1000 times + for i in range(1000): + b.validate_transaction(tx_signed) + + profiler.print_stats()