A simple profiler that counts calls and records timing for grammar rules
Perl6
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/Grammar/Profiler
t
META.info
README.markdown

README.markdown

Grammar::Profiler::Simple

This module provides a simple profiler for Perl 6 gramamrs. To enable profiling simply add

use Grammar::Profiler::Simple;

to your code. Any grammar in the lexical scope of the use statement will automatically have profiling information collected when the grammar is used.

This module exports two subroutines, each with 3 variants:

reset-timing()

Reset all time information collected since the start of the program or since the last call to reset-timing()

reset-timing($grammar)

Reset all time information only for the specified grammar.

reset-timing($grammar, $rule)

Reset all time information only for the specified rule within the specified grammar.

get-timing()

Retrieve the timing information collected so far or since the last call to reset-timing. Returned as a mult-level hash with the first level indexed by the name of the grammar and the second level indexed by the name of the rule within the grammar.

get-timing($grammar)

Retrieve the timing information collected for a particular grammar.

get-timing($grammar, $rule)

Retrieve the timing information collected for a particular rule within a particular grammar.

Timing information

There are 2 bits of timing information collected: the number of times each rule was called and the cumulative time that was spent executing each rule. For example

say "MyRule was called {get-timing('MyGrammar','MyRule')} times"; say "The total time executing MyRule was {get-timing('MyGrammar','MyRule')} seconds";