Skip to content

Commit

Permalink
Comparsion of JSON parser parse trees.
Browse files Browse the repository at this point in the history
  • Loading branch information
eerimoq committed Jul 29, 2018
1 parent 8ea0b86 commit e643121
Show file tree
Hide file tree
Showing 12 changed files with 439 additions and 46 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ script:
- make test-sdist
- env PYTHONPATH=. python examples/hello_world.py
- env PYTHONPATH=. python examples/benchmarks/json/errors.py
- env PYTHONPATH=. python examples/benchmarks/json/parse_tree.py
- env PYTHONPATH=. python examples/benchmarks/json/cpu.py
after_success:
coveralls
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ test:
env PYTHONPATH=. python3 examples/hello_world.py
env PYTHONPATH=. python3 examples/proto3.py
env PYTHONPATH=. python3 examples/benchmarks/json/errors.py
env PYTHONPATH=. python3 examples/benchmarks/json/parse_tree.py
env PYTHONPATH=. python3 examples/benchmarks/json/cpu.py
codespell -d $$(git ls-files | grep -v \.json)

Expand Down
36 changes: 18 additions & 18 deletions examples/benchmarks/json/cpu.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
Parsing 'examples/benchmarks/json/data.json' 1 time(s) took:
PACKAGE SECONDS
textparser 0.099870
lark (LALR) 0.252110
funcparserlib 0.349336
parsimonious 0.386092
pyparsing 0.720664
parsy 0.940929
lark (Earley) 1.823468
parsita 2.435160
textparser 0.100049
lark (LALR) 0.251040
funcparserlib 0.339087
parsimonious 0.380170
pyparsing 0.677518
parsy 0.938273
lark (Earley) 1.877682
parsita 2.326168
$
"""
Expand All @@ -40,7 +40,7 @@
class parsita_json(object):

@staticmethod
def parse(_json_string, _iterations):
def parse_time(_json_string, _iterations):
return float('inf')

try:
Expand All @@ -49,7 +49,7 @@ def parse(_json_string, _iterations):
class parsy_json(object):

@staticmethod
def parse(_json_string, _iterations):
def parse_time(_json_string, _iterations):
return float('inf')


Expand All @@ -67,14 +67,14 @@ def parse(_json_string, _iterations):
DATA_JSON,
ITERATIONS))

textparser_time = textparser_json.parse(JSON_STRING, ITERATIONS)
lark_lalr_time = lark_json.parse_lalr(JSON_STRING, ITERATIONS)
lark_earley_time = lark_json.parse_earley(JSON_STRING, ITERATIONS)
pyparsing_time = pyparsing_json.parse(JSON_STRING, ITERATIONS)
parsita_time = parsita_json.parse(JSON_STRING, ITERATIONS)
funcparserlib_time = funcparserlib_json.parse(JSON_STRING, ITERATIONS)
parsy_time = parsy_json.parse(JSON_STRING, ITERATIONS)
parsimonious_time = parsimonious_json.parse(JSON_STRING, ITERATIONS)
textparser_time = textparser_json.parse_time(JSON_STRING, ITERATIONS)
lark_lalr_time = lark_json.parse_time_lalr(JSON_STRING, ITERATIONS)
lark_earley_time = lark_json.parse_time_earley(JSON_STRING, ITERATIONS)
pyparsing_time = pyparsing_json.parse_time(JSON_STRING, ITERATIONS)
parsita_time = parsita_json.parse_time(JSON_STRING, ITERATIONS)
funcparserlib_time = funcparserlib_json.parse_time(JSON_STRING, ITERATIONS)
parsy_time = parsy_json.parse_time(JSON_STRING, ITERATIONS)
parsimonious_time = parsimonious_json.parse_time(JSON_STRING, ITERATIONS)

# Parse comparison output.
measurements = [
Expand Down
6 changes: 3 additions & 3 deletions examples/benchmarks/json/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
class parsita_json(object):

@staticmethod
def parse(_json_string, _iterations):
def parse(_json_string):
raise Exception('Import failed!')

try:
Expand All @@ -154,14 +154,14 @@ def parse(_json_string, _iterations):
class parsy_json(object):

@staticmethod
def parse(_json_string, _iterations):
def parse(_json_string):
raise Exception('Import failed!')


def parse(string):
def _parse(function):
try:
function(string, 1)
function(string)
except Exception as e:
return str(e)

Expand Down

0 comments on commit e643121

Please sign in to comment.