Skip to content

A simple profiler that counts calls and records timing for grammar rules

Notifications You must be signed in to change notification settings

zakame/Grammar-Profiler-Simple

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Grammar::Profiler::Simple

This module provides a simple profiler for Perl 6 grammars. 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')<calls>} times";
say "The total time executing MyRule was {get-timing('MyGrammar','MyRule')<time>} seconds";

About

A simple profiler that counts calls and records timing for grammar rules

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Other 100.0%