OLD | NEW |
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" | 5 #include "vm/benchmark_test.h" |
6 | 6 |
7 #include "bin/builtin.h" | 7 #include "bin/builtin.h" |
8 #include "bin/file.h" | 8 #include "bin/file.h" |
9 #include "bin/isolate_data.h" | 9 #include "bin/isolate_data.h" |
10 | 10 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 void Benchmark::RunAll(const char* executable) { | 88 void Benchmark::RunAll(const char* executable) { |
89 SetExecutable(executable); | 89 SetExecutable(executable); |
90 Benchmark* benchmark = first_; | 90 Benchmark* benchmark = first_; |
91 while (benchmark != NULL) { | 91 while (benchmark != NULL) { |
92 benchmark->RunBenchmark(); | 92 benchmark->RunBenchmark(); |
93 benchmark = benchmark->next_; | 93 benchmark = benchmark->next_; |
94 } | 94 } |
95 } | 95 } |
96 | 96 |
97 | 97 |
98 Dart_Isolate Benchmark::CreateIsolate(const uint8_t* buffer) { | 98 Dart_Isolate Benchmark::CreateIsolate(const uint8_t* snapshot_data, |
| 99 const uint8_t* snapshot_instructions) { |
99 char* err = NULL; | 100 char* err = NULL; |
100 isolate_ = Dart_CreateIsolate(NULL, NULL, buffer, NULL, NULL, &err); | 101 isolate_ = Dart_CreateIsolate(NULL, NULL, snapshot_data, |
| 102 snapshot_instructions, NULL, NULL, &err); |
101 EXPECT(isolate_ != NULL); | 103 EXPECT(isolate_ != NULL); |
102 free(err); | 104 free(err); |
103 return isolate_; | 105 return isolate_; |
104 } | 106 } |
105 | 107 |
106 | 108 |
107 // | 109 // |
108 // Measure compile of all functions in dart core lib classes. | 110 // Measure compile of all functions in dart core lib classes. |
109 // | 111 // |
110 BENCHMARK(CorelibCompileAll) { | 112 BENCHMARK(CorelibCompileAll) { |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 "import 'dart:core';\n" | 504 "import 'dart:core';\n" |
503 "import 'dart:collection';\n" | 505 "import 'dart:collection';\n" |
504 "import 'dart:_internal';\n" | 506 "import 'dart:_internal';\n" |
505 "import 'dart:math';\n" | 507 "import 'dart:math';\n" |
506 "import 'dart:isolate';\n" | 508 "import 'dart:isolate';\n" |
507 "import 'dart:mirrors';\n" | 509 "import 'dart:mirrors';\n" |
508 "import 'dart:typed_data';\n" | 510 "import 'dart:typed_data';\n" |
509 "\n"; | 511 "\n"; |
510 | 512 |
511 // Start an Isolate, load a script and create a full snapshot. | 513 // Start an Isolate, load a script and create a full snapshot. |
512 uint8_t* vm_isolate_snapshot_buffer; | 514 uint8_t* vm_snapshot_data_buffer; |
513 uint8_t* isolate_snapshot_buffer; | 515 uint8_t* isolate_snapshot_data_buffer; |
514 // Need to load the script into the dart: core library due to | 516 // Need to load the script into the dart: core library due to |
515 // the import of dart:_internal. | 517 // the import of dart:_internal. |
516 TestCase::LoadCoreTestScript(kScriptChars, NULL); | 518 TestCase::LoadCoreTestScript(kScriptChars, NULL); |
517 Api::CheckAndFinalizePendingClasses(thread); | 519 Api::CheckAndFinalizePendingClasses(thread); |
518 | 520 |
519 // Write snapshot with object content. | 521 // Write snapshot with object content. |
520 FullSnapshotWriter writer(Snapshot::kCore, &vm_isolate_snapshot_buffer, | 522 FullSnapshotWriter writer(Snapshot::kCore, &vm_snapshot_data_buffer, |
521 &isolate_snapshot_buffer, &malloc_allocator, | 523 &isolate_snapshot_data_buffer, &malloc_allocator, |
522 NULL /* instructions_writer */); | 524 NULL, NULL /* instructions_writer */); |
523 writer.WriteFullSnapshot(); | 525 writer.WriteFullSnapshot(); |
524 const Snapshot* snapshot = Snapshot::SetupFromBuffer(isolate_snapshot_buffer); | 526 const Snapshot* snapshot = |
| 527 Snapshot::SetupFromBuffer(isolate_snapshot_data_buffer); |
525 ASSERT(snapshot->kind() == Snapshot::kCore); | 528 ASSERT(snapshot->kind() == Snapshot::kCore); |
526 benchmark->set_score(snapshot->length()); | 529 benchmark->set_score(snapshot->length()); |
527 | 530 |
528 free(vm_isolate_snapshot_buffer); | 531 free(vm_snapshot_data_buffer); |
529 free(isolate_snapshot_buffer); | 532 free(isolate_snapshot_data_buffer); |
530 } | 533 } |
531 | 534 |
532 | 535 |
533 BENCHMARK_SIZE(StandaloneSnapshotSize) { | 536 BENCHMARK_SIZE(StandaloneSnapshotSize) { |
534 const char* kScriptChars = | 537 const char* kScriptChars = |
535 "import 'dart:async';\n" | 538 "import 'dart:async';\n" |
536 "import 'dart:core';\n" | 539 "import 'dart:core';\n" |
537 "import 'dart:collection';\n" | 540 "import 'dart:collection';\n" |
538 "import 'dart:_internal';\n" | 541 "import 'dart:_internal';\n" |
539 "import 'dart:convert';\n" | 542 "import 'dart:convert';\n" |
540 "import 'dart:math';\n" | 543 "import 'dart:math';\n" |
541 "import 'dart:isolate';\n" | 544 "import 'dart:isolate';\n" |
542 "import 'dart:mirrors';\n" | 545 "import 'dart:mirrors';\n" |
543 "import 'dart:typed_data';\n" | 546 "import 'dart:typed_data';\n" |
544 "import 'dart:_builtin';\n" | 547 "import 'dart:_builtin';\n" |
545 "import 'dart:io';\n" | 548 "import 'dart:io';\n" |
546 "\n"; | 549 "\n"; |
547 | 550 |
548 // Start an Isolate, load a script and create a full snapshot. | 551 // Start an Isolate, load a script and create a full snapshot. |
549 uint8_t* vm_isolate_snapshot_buffer; | 552 uint8_t* vm_snapshot_data_buffer; |
550 uint8_t* isolate_snapshot_buffer; | 553 uint8_t* isolate_snapshot_data_buffer; |
551 // Need to load the script into the dart: core library due to | 554 // Need to load the script into the dart: core library due to |
552 // the import of dart:_internal. | 555 // the import of dart:_internal. |
553 TestCase::LoadCoreTestScript(kScriptChars, NULL); | 556 TestCase::LoadCoreTestScript(kScriptChars, NULL); |
554 Api::CheckAndFinalizePendingClasses(thread); | 557 Api::CheckAndFinalizePendingClasses(thread); |
555 | 558 |
556 // Write snapshot with object content. | 559 // Write snapshot with object content. |
557 FullSnapshotWriter writer(Snapshot::kCore, &vm_isolate_snapshot_buffer, | 560 FullSnapshotWriter writer(Snapshot::kCore, &vm_snapshot_data_buffer, |
558 &isolate_snapshot_buffer, &malloc_allocator, | 561 &isolate_snapshot_data_buffer, &malloc_allocator, |
559 NULL /* instructions_writer */); | 562 NULL, NULL /* instructions_writer */); |
560 writer.WriteFullSnapshot(); | 563 writer.WriteFullSnapshot(); |
561 const Snapshot* snapshot = Snapshot::SetupFromBuffer(isolate_snapshot_buffer); | 564 const Snapshot* snapshot = |
| 565 Snapshot::SetupFromBuffer(isolate_snapshot_data_buffer); |
562 ASSERT(snapshot->kind() == Snapshot::kCore); | 566 ASSERT(snapshot->kind() == Snapshot::kCore); |
563 benchmark->set_score(snapshot->length()); | 567 benchmark->set_score(snapshot->length()); |
564 | 568 |
565 free(vm_isolate_snapshot_buffer); | 569 free(vm_snapshot_data_buffer); |
566 free(isolate_snapshot_buffer); | 570 free(isolate_snapshot_data_buffer); |
567 } | 571 } |
568 | 572 |
569 | 573 |
570 BENCHMARK(CreateMirrorSystem) { | 574 BENCHMARK(CreateMirrorSystem) { |
571 const char* kScriptChars = | 575 const char* kScriptChars = |
572 "import 'dart:mirrors';\n" | 576 "import 'dart:mirrors';\n" |
573 "\n" | 577 "\n" |
574 "void benchmark() {\n" | 578 "void benchmark() {\n" |
575 " currentMirrorSystem();\n" | 579 " currentMirrorSystem();\n" |
576 "}\n"; | 580 "}\n"; |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 int64_t elapsed_time = timer.TotalElapsedTime(); | 723 int64_t elapsed_time = timer.TotalElapsedTime(); |
720 benchmark->set_score(elapsed_time); | 724 benchmark->set_score(elapsed_time); |
721 } | 725 } |
722 | 726 |
723 | 727 |
724 BENCHMARK_MEMORY(InitialRSS) { | 728 BENCHMARK_MEMORY(InitialRSS) { |
725 benchmark->set_score(OS::MaxRSS()); | 729 benchmark->set_score(OS::MaxRSS()); |
726 } | 730 } |
727 | 731 |
728 } // namespace dart | 732 } // namespace dart |
OLD | NEW |