Introduction
This directory contains scripts that are used to instrument the performance of fetching a trait using the GN2 API vs using LMDB. Assuming you have a script called ,runcmd:
#!/bin/sh env GN2_PROFILE=$HOME/opt/genenetwork2 \ TMPDIR=$HOME/tmp SERVER_PORT=5004 \ WEBSERVER_MODE=DEV \ GENENETWORK_FILES=$HOME/data/genotype_files/ \ SPARQL_ENDPOINT=http://localhost:8892/sparql\ SQL_URI="mysql://root:root@localhost:3306/db_webqtl_s"\ GN_PROXY_URL=http://localhost:8080 \ GN_SERVER_URL=http://localhost:8083/api \ GN3_LOCAL_URL=http://localhost:8083 \ GN_LOCAL_URL=http://localhost:8083 \ $HOME/projects/oqo-genenetwork2/bin/genenetwork2 \ $HOME/projects/oqo-genenetwork2/gn2/default_settings.py\ -cli $*
To run the script 10 times, execute:
,runcmd testing python $HOME/projects/oqo-genenetwork2/testing/scripts/performance/timeit_gn2.py 10
,runcmd testing python $HOME/projects/oqo-genenetwork2/testing/scripts/performance/timeit_lmdb.py 10
Here are some rudimentary results:
Assuming you have already dumped "HLCPublish/10001" - which contains 476 strains - somewhere in LMDB, the time it takes to fetch "HLCPublish/10001" N times is:
Number | gn2 (seconds) | lmdb (seconds) | gn2/lmdb |
---|---|---|---|
10 | 0.5971280680023483 | 0.04270002100020065 | 13.984257 |
50 | 3.6268229950001114 | 0.15371317300014198 | 23.594744 |
100 | 5.885073402001581 | 0.3161755159999302 | 18.613312 |
1000 | 60.6393681030022 | 3.107457533998968 | 19.514142 |
10000 | 723.0237347940019 | 27.541215700002795 | 26.252426 |