Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(838)

Unified Diff: src/lexer/lexer-shell.cc

Issue 59533005: Prepare lexer-shell for benchmarking: process multiple input files, adjust output. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/lexer/lexer.re ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/lexer/lexer-shell.cc
diff --git a/src/lexer/lexer-shell.cc b/src/lexer/lexer-shell.cc
index 0ea53cd7ce362967e279bd21e1b13c7fc71eac0b..0bcf85ee39a2cd7a1762858802aa12b8b61d2d62 100644
--- a/src/lexer/lexer-shell.cc
+++ b/src/lexer/lexer-shell.cc
@@ -30,6 +30,7 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string>
#include "v8.h"
#include "api.h"
@@ -80,7 +81,7 @@ class BaselineScanner {
BaselineScanner(const char* fname,
Isolate* isolate,
Encoding encoding,
- ElapsedTimer* timer) {
+ ElapsedTimer* timer) : stream_(NULL) {
int length = 0;
source_ = ReadFile(fname, isolate, &length);
unicode_cache_ = new UnicodeCache();
@@ -106,8 +107,6 @@ class BaselineScanner {
new GenericStringUtf16CharacterStream(result, 0, result->length());
break;
}
- default:
- break;
}
timer->Start();
scanner_->Initialize(stream_);
@@ -207,6 +206,53 @@ void PrintTokens(const char* name,
}
+std::pair<TimeDelta, TimeDelta> ProcessFile(
+ const char* fname,
+ Encoding encoding,
+ Isolate* isolate,
+ bool run_baseline,
+ bool run_experimental,
+ bool print_tokens) {
+ if (print_tokens) {
+ printf("Processing file %s\n", fname);
+ }
+ HandleScope handle_scope(isolate);
+ std::vector<TokenWithLocation> baseline_tokens, experimental_tokens;
+ TimeDelta baseline_time, experimental_time;
+ if (run_baseline) {
+ baseline_time = RunBaselineScanner(
+ fname, isolate, encoding, print_tokens, &baseline_tokens);
+ }
+ if (run_experimental) {
+ experimental_time = RunExperimentalScanner(
+ fname, isolate, encoding, print_tokens, &experimental_tokens);
+ }
+ if (print_tokens && !run_experimental) {
+ PrintTokens("Baseline", baseline_tokens);
+ }
+ if (print_tokens && !run_baseline) {
+ PrintTokens("Experimental", experimental_tokens);
+ }
+ if (print_tokens && run_baseline && run_experimental) {
+ printf("No of tokens in Baseline: %d\n",
+ static_cast<int>(baseline_tokens.size()));
+ printf("No of tokens in Experimental: %d\n",
+ static_cast<int>(experimental_tokens.size()));
+ printf("Baseline and Experimental:\n");
+ for (size_t i = 0; i < experimental_tokens.size(); ++i) {
+ experimental_tokens[i].Print("=>");
+ if (experimental_tokens[i] != baseline_tokens[i]) {
+ printf("MISMATCH:\n");
+ baseline_tokens[i].Print("Expected: ");
+ experimental_tokens[i].Print("Actual: ");
+ exit(1);
+ }
+ }
+ }
+ return std::make_pair(baseline_time, experimental_time);
+}
+
+
int main(int argc, char* argv[]) {
v8::V8::InitializeICU();
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
@@ -214,7 +260,8 @@ int main(int argc, char* argv[]) {
bool print_tokens = false;
bool run_baseline = true;
bool run_experimental = true;
- char* fname = argv[1];
+ std::vector<std::string> fnames;
+ std::string benchmark;
for (int i = 0; i < argc; ++i) {
if (strcmp(argv[i], "--latin1") == 0) {
encoding = LATIN1;
@@ -230,8 +277,10 @@ int main(int argc, char* argv[]) {
run_baseline = false;
} else if (strcmp(argv[i], "--no-experimental") == 0) {
run_experimental = false;
- } else if (argv[i][0] != '-') {
- fname = argv[i];
+ } else if (strncmp(argv[i], "--benchmark=", 12) == 0) {
+ benchmark = std::string(argv[1]).substr(12);
+ } else if (i > 0 && argv[i][0] != '-') {
+ fnames.push_back(std::string(argv[i]));
}
}
v8::Isolate* isolate = v8::Isolate::GetCurrent();
@@ -243,45 +292,21 @@ int main(int argc, char* argv[]) {
{
v8::Context::Scope scope(context);
Isolate* isolate = Isolate::Current();
- HandleScope handle_scope(isolate);
-
- std::vector<TokenWithLocation> baseline_tokens, experimental_tokens;
- TimeDelta baseline_time, experimental_time;
- if (run_baseline) {
- baseline_time = RunBaselineScanner(
- fname, isolate, encoding, print_tokens, &baseline_tokens);
- }
- if (run_experimental) {
- experimental_time = RunExperimentalScanner(
- fname, isolate, encoding, print_tokens, &experimental_tokens);
- }
- if (print_tokens && !run_experimental) {
- PrintTokens("Baseline", baseline_tokens);
- }
- if (print_tokens && !run_baseline) {
- PrintTokens("Experimental", experimental_tokens);
- }
- if (print_tokens && run_baseline && run_experimental) {
- printf("No of tokens in Baseline: %d\n",
- static_cast<int>(baseline_tokens.size()));
- printf("No of tokens in Experimental: %d\n",
- static_cast<int>(experimental_tokens.size()));
- printf("Baseline and Experimental:\n");
- for (size_t i = 0; i < experimental_tokens.size(); ++i) {
- experimental_tokens[i].Print("=>");
- if (experimental_tokens[i] != baseline_tokens[i]) {
- printf("MISMATCH:\n");
- baseline_tokens[i].Print("Expected: ");
- experimental_tokens[i].Print("Actual: ");
- return 1;
- }
- }
+ double baseline_total = 0, experimental_total = 0;
+ for (size_t i = 0; i < fnames.size(); i++) {
+ std::pair<TimeDelta, TimeDelta> times;
+ times = ProcessFile(fnames[i].c_str(), encoding, isolate,
+ run_baseline, run_experimental, print_tokens);
+ baseline_total += times.first.InMillisecondsF();
+ experimental_total += times.second.InMillisecondsF();
}
if (run_baseline) {
- printf("Baseline : %.3f ms\n", baseline_time.InMillisecondsF());
+ printf("Baseline%s(RunTime): %.f ms\n", benchmark.c_str(),
+ baseline_total);
}
if (run_experimental) {
- printf("Experimental: %.3f ms\n", experimental_time.InMillisecondsF());
+ printf("Experimental%s(RunTime): %.f ms\n", benchmark.c_str(),
+ experimental_total);
}
}
}
« no previous file with comments | « src/lexer/lexer.re ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698