diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-03 20:02:14 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-03 20:02:14 -0300 |
| commit | e70fddaf4bd5d85edd8b3e9a551dc8c9c101f10a (patch) | |
| tree | e87568e612e9d97381ad0592270b29a668f2ddc8 /src | |
| parent | aea83f40c087ee32cbc1ad4e7940d53f887fbff8 (diff) | |
Minor updates
This does some minor updates to things, as well as adding some
performance tracking
Diffstat (limited to 'src')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammarParser.java | 4 | ||||
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammarSet.java | 19 | ||||
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammarTest.java | 19 |
3 files changed, 42 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarParser.java b/src/main/java/bjc/rgens/parser/RGrammarParser.java index 438688d..4045837 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarParser.java +++ b/src/main/java/bjc/rgens/parser/RGrammarParser.java @@ -30,6 +30,7 @@ public class RGrammarParser { * Whether we are in debug mode or not. */ public static final boolean DEBUG = false; + public static final boolean LINES = true; /* * Templates for level-dependent delimiters. @@ -148,6 +149,9 @@ public class RGrammarParser { handleBlock(build, block.contents, 0); }); + if(LINES) + System.err.printf("%d ", reader.getBlock().endLine); + return build.toRGrammar(); } catch (GrammarException gex) { String msg = String.format("Error in block (%s)", reader.getBlock()); diff --git a/src/main/java/bjc/rgens/parser/RGrammarSet.java b/src/main/java/bjc/rgens/parser/RGrammarSet.java index c797b8c..ad9836f 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarSet.java +++ b/src/main/java/bjc/rgens/parser/RGrammarSet.java @@ -29,6 +29,8 @@ public class RGrammarSet { /* Contains which file a grammar was loaded from. */ private Map<String, String> loadedFrom; + public static final boolean PERF = true; + /** Create a new set of randomized grammars. */ public RGrammarSet() { grammars = new HashMap<>(); @@ -222,6 +224,8 @@ public class RGrammarSet { /* The grammar set to hand back. */ RGrammarSet set = new RGrammarSet(); + long startCFGTime = System.nanoTime(); + /* Get the directory that contains the config file. */ Path cfgParent = cfgFile.getParent(); @@ -263,12 +267,20 @@ public class RGrammarSet { } else if (convPath.getFileName().toString().endsWith(".gram")) { /* Load grammar file. */ try { + long startFileTime = System.nanoTime(); BufferedReader fis = Files.newBufferedReader(convPath); RGrammar gram = RGrammarParser.readGrammar(fis); fis.close(); + long endFileTime = System.nanoTime(); + + long fileTime = endFileTime - startFileTime; + + if(PERF) + System.err.printf("\tPERF: Read grammar %s in %d ns (%f s)\n", convPath, fileTime, fileTime / 1000000000.0); + /* Add grammar to the set. */ set.addGrammar(name, gram); @@ -288,6 +300,13 @@ public class RGrammarSet { } } + long endCFGTime = System.nanoTime(); + + long cfgDur = endCFGTime - startCFGTime; + + if(PERF) + System.err.printf("\n\nPERF: Read config file %s in %d ns (%f s)\n", cfgFile, cfgDur, cfgDur / 1000000000.0); + return set; } } diff --git a/src/main/java/bjc/rgens/parser/RGrammarTest.java b/src/main/java/bjc/rgens/parser/RGrammarTest.java index 4b1f283..02a32f7 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarTest.java +++ b/src/main/java/bjc/rgens/parser/RGrammarTest.java @@ -28,9 +28,21 @@ public class RGrammarTest { /* Generate rule suggestions for all the grammars in the set. */ for (String gramName : gramSet.getGrammars()) { + long startSuggTime = System.nanoTime(); + gramSet.getGrammar(gramName).generateSuggestions(); + + long endSuggTime = System.nanoTime(); + + long suggDur = endSuggTime - startSuggTime; + + if(gramSet.PERF) + System.err.printf("PERF: Generated rule suggestions for %s in %d ns (%f s)\n", gramName, suggDur, suggDur / 1000000000.0); } + if(gramSet.PERF) + System.err.printf("\n\n"); + /* Generate for each exported rule. */ for (String exportName : gramSet.getExportedRules()) { /* Where we loaded the rule from. */ @@ -40,6 +52,7 @@ public class RGrammarTest { System.out.printf("Generating for exported rule '%s' from file '%s'\n", exportName, loadSrc); RGrammar grammar = gramSet.getExportSource(exportName); + long startGenTime = System.nanoTime(); for (int i = 0; i < 100; i++) { try { String res = grammar.generate(exportName); @@ -62,6 +75,12 @@ public class RGrammarTest { System.out.println(); } } + long endGenTime = System.nanoTime(); + + long genDur = endGenTime - startGenTime; + + if(gramSet.PERF) + System.err.printf("PERF: Generated %s 100 times in %d ns (%f s)\n", exportName, genDur, genDur / 1000000000.0); } } catch (IOException ioex) { ioex.printStackTrace(); |
