summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-03 20:02:14 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-06-03 20:02:14 -0300
commite70fddaf4bd5d85edd8b3e9a551dc8c9c101f10a (patch)
treee87568e612e9d97381ad0592270b29a668f2ddc8 /src/main
parentaea83f40c087ee32cbc1ad4e7940d53f887fbff8 (diff)
Minor updates
This does some minor updates to things, as well as adding some performance tracking
Diffstat (limited to 'src/main')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarParser.java4
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarSet.java19
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarTest.java19
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();