Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Tools/peg_generator/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
peg_extension/parse.c
data/xxl.py
venv/
@data
34 changes: 21 additions & 13 deletions Tools/peg_generator/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ endif
ifeq ($(UNAME_S),Darwin)
PYTHON ?= ../../python.exe
endif

VENVDIR ?= ./venv
VENVPYTHON ?= $(VENVDIR)/bin/python
CPYTHON ?= ../../Lib
MYPY ?= mypy

Expand All @@ -27,6 +28,7 @@ peg_extension/parse.c: $(GRAMMAR) $(TOKENS) pegen/*.py peg_extension/peg_extensi
clean:
-rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c
-rm -f data/xxl.py
-rm -rf $(VENVDIR)

dump: peg_extension/parse.c
cat -n $(TESTFILE)
Expand All @@ -41,6 +43,12 @@ regen-metaparser: pegen/metagrammar.gram pegen/*.py

.PHONY: test

venv:
$(PYTHON) -m venv $(VENVDIR)
$(VENVPYTHON) -m pip install -U pip setuptools
$(VENVPYTHON) -m pip install -U memory_profiler
@echo "The venv has been created in the $(VENVDIR) directory"

test: run

run: peg_extension/parse.c
Expand All @@ -61,22 +69,22 @@ stats: peg_extension/parse.c data/xxl.py

time: time_compile

time_compile: peg_extension/parse.c data/xxl.py
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl compile
time_compile: venv peg_extension/parse.c data/xxl.py
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl compile

time_parse: peg_extension/parse.c data/xxl.py
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl parse
time_parse: venv peg_extension/parse.c data/xxl.py
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl parse

time_check: peg_extension/parse.c data/xxl.py
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl check
time_check: venv peg_extension/parse.c data/xxl.py
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl check

time_stdlib: time_stdlib_compile

time_stdlib_compile: data/xxl.py
$(PYTHON) scripts/benchmark.py --parser=cpython --target=xxl compile
time_stdlib_compile: venv peg_extension/parse.c data/xxl.py
$(VENVPYTHON) scripts/benchmark.py --parser=cpython --target=xxl compile

time_stdlib_parse: data/xxl.py
$(PYTHON) scripts/benchmark.py --parser=cpython --target=xxl parse
time_stdlib_parse: venv peg_extension/parse.c data/xxl.py
$(VENVPYTHON) scripts/benchmark.py --parser=cpython --target=xxl parse

test_local:
$(PYTHON) scripts/test_parse_directory.py \
Expand Down Expand Up @@ -105,8 +113,8 @@ mypy: regen-metaparser
format-python:
black pegen scripts

bench:
$(PYTHON) scripts/benchmark.py --parser=pegen --target=stdlib check
bench: venv
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=stdlib check

format: format-python

Expand Down
9 changes: 7 additions & 2 deletions Tools/peg_generator/scripts/benchmark.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
#!/usr/bin/env python3.9
#!/usr/bin/env python3

import argparse
import ast
import sys
import os
from time import time

import memory_profiler
try:
import memory_profiler
except ModuleNotFoundError:
print("Please run `make venv` to create a virtual environment and install"
" all the dependencies, before running this script.")
sys.exit(1)

sys.path.insert(0, os.getcwd())
from peg_extension import parse
Expand Down