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

Side by Side Diff: vm/benchmark_test.cc

Issue 10280003: Set up a variable so that the compiler script can be imported using an import map. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/benchmark_test.h ('k') | vm/unit_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/benchmark_test.h"
6
7 #include "bin/file.h"
8
5 #include "platform/assert.h" 9 #include "platform/assert.h"
6 10
7 #include "vm/benchmark_test.h"
8 #include "vm/dart_api_impl.h" 11 #include "vm/dart_api_impl.h"
9 #include "vm/stack_frame.h" 12 #include "vm/stack_frame.h"
10 #include "vm/unit_test.h" 13 #include "vm/unit_test.h"
11 14
12 namespace dart { 15 namespace dart {
13 16
14 Benchmark* Benchmark::first_ = NULL; 17 Benchmark* Benchmark::first_ = NULL;
15 Benchmark* Benchmark::tail_ = NULL; 18 Benchmark* Benchmark::tail_ = NULL;
19 const char* Benchmark::executable_ = NULL;
16 20
17 void Benchmark::RunAll() { 21 void Benchmark::RunAll(const char* executable) {
22 SetExecutable(executable);
18 Benchmark* benchmark = first_; 23 Benchmark* benchmark = first_;
19 while (benchmark != NULL) { 24 while (benchmark != NULL) {
20 benchmark->RunBenchmark(); 25 benchmark->RunBenchmark();
21 benchmark = benchmark->next_; 26 benchmark = benchmark->next_;
22 } 27 }
23 } 28 }
24 29
25 30
26 // Compiler only implemented on IA32 and X64 now. 31 // Compiler only implemented on IA32 and X64 now.
27 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) 32 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 Dart_Invoke(lib, 179 Dart_Invoke(lib,
175 Dart_NewString("benchmark"), 180 Dart_NewString("benchmark"),
176 1, 181 1,
177 args); 182 args);
178 timer.Stop(); 183 timer.Stop();
179 int64_t elapsed_time = timer.TotalElapsedTime(); 184 int64_t elapsed_time = timer.TotalElapsedTime();
180 benchmark->set_score(elapsed_time); 185 benchmark->set_score(elapsed_time);
181 } 186 }
182 187
183 188
184 #if 0
185 // 189 //
186 // Measure compile of all dart2js(compiler) functions. 190 // Measure compile of all dart2js(compiler) functions.
187 // 191 //
192 static char* ComputeDart2JSPath(const char* arg) {
193 char buffer[2048];
194 char* dart2js_path = strdup(File::GetCanonicalPath(arg));
195 const char* compiler_path = "%s%slib%scompiler%scompiler.dart";
196 const char* path_separator = File::PathSeparator();
197 ASSERT(path_separator != NULL && strlen(path_separator) == 1);
198 char* ptr = strrchr(dart2js_path, *path_separator);
199 while (ptr != NULL) {
200 *ptr = '\0';
201 OS::SNPrint(buffer, 2048, compiler_path,
202 dart2js_path,
203 path_separator,
204 path_separator,
205 path_separator);
206 if (File::Exists(buffer)) {
207 break;
208 }
209 ptr = strrchr(dart2js_path, *path_separator);
210 }
211 if (ptr == NULL) {
212 free(dart2js_path);
213 dart2js_path = NULL;
214 }
215 return dart2js_path;
216 }
217
218
188 static void func(Dart_NativeArguments args) { 219 static void func(Dart_NativeArguments args) {
189 } 220 }
190 221
191 222
192 static Dart_NativeFunction NativeResolver(Dart_Handle name, 223 static Dart_NativeFunction NativeResolver(Dart_Handle name,
193 int arg_count) { 224 int arg_count) {
194 return &func; 225 return &func;
195 } 226 }
196 227
197 228
198 BENCHMARK(Dart2JSCompileAll) { 229 BENCHMARK(Dart2JSCompileAll) {
199 const char* kScriptChars = "#import('lib/compiler/compiler.dart');"; 230 char* dart_root = ComputeDart2JSPath(Benchmark::Executable());
231 Dart_Handle import_map;
232 if (dart_root != NULL) {
233 import_map = Dart_NewList(2);
234 Dart_ListSetAt(import_map, 0, Dart_NewString("DART_ROOT"));
235 Dart_ListSetAt(import_map, 1, Dart_NewString(dart_root));
236 } else {
237 import_map = Dart_NewList(0);
238 }
239 const char* kScriptChars =
240 "#import('${DART_ROOT}/lib/compiler/compiler.dart');";
200 Dart_Handle lib = TestCase::LoadTestScript( 241 Dart_Handle lib = TestCase::LoadTestScript(
201 kScriptChars, 242 kScriptChars,
202 reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver)); 243 reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver),
244 import_map);
203 EXPECT(!Dart_IsError(lib)); 245 EXPECT(!Dart_IsError(lib));
204 Timer timer(true, "Compile all of dart2js benchmark"); 246 Timer timer(true, "Compile all of dart2js benchmark");
205 timer.Start(); 247 timer.Start();
206 Dart_Handle result = Dart_CompileAll(); 248 Dart_Handle result = Dart_CompileAll();
207 EXPECT(!Dart_IsError(result)); 249 EXPECT(!Dart_IsError(result));
208 timer.Stop(); 250 timer.Stop();
209 int64_t elapsed_time = timer.TotalElapsedTime(); 251 int64_t elapsed_time = timer.TotalElapsedTime();
210 benchmark->set_score(elapsed_time); 252 benchmark->set_score(elapsed_time);
253 free(dart_root);
211 } 254 }
212 #endif
213 255
214 256
215 // 257 //
216 // Measure frame lookup during stack traversal. 258 // Measure frame lookup during stack traversal.
217 // 259 //
218 static void StackFrame_accessFrame(Dart_NativeArguments args) { 260 static void StackFrame_accessFrame(Dart_NativeArguments args) {
219 const int kNumIterations = 100; 261 const int kNumIterations = 100;
220 Dart_EnterScope(); 262 Dart_EnterScope();
221 Code& code = Code::Handle(); 263 Code& code = Code::Handle();
222 Timer timer(true, "LookupDartCode benchmark"); 264 Timer timer(true, "LookupDartCode benchmark");
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 reinterpret_cast<Dart_NativeEntryResolver>(StackFrameNativeResolver)); 335 reinterpret_cast<Dart_NativeEntryResolver>(StackFrameNativeResolver));
294 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("StackFrameTest")); 336 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("StackFrameTest"));
295 Dart_Handle result = Dart_Invoke(cls, Dart_NewString("testMain"), 0, NULL); 337 Dart_Handle result = Dart_Invoke(cls, Dart_NewString("testMain"), 0, NULL);
296 EXPECT_VALID(result); 338 EXPECT_VALID(result);
297 int64_t elapsed_time = 0; 339 int64_t elapsed_time = 0;
298 EXPECT(!Dart_IsError(Dart_IntegerToInt64(result, &elapsed_time))); 340 EXPECT(!Dart_IsError(Dart_IntegerToInt64(result, &elapsed_time)));
299 benchmark->set_score(elapsed_time); 341 benchmark->set_score(elapsed_time);
300 } 342 }
301 343
302 } // namespace dart 344 } // namespace dart
OLDNEW
« no previous file with comments | « vm/benchmark_test.h ('k') | vm/unit_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698