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

Unified Diff: tests/service_tests/performance/performance_test.cc

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: tests/service_tests/performance/performance_test.cc
diff --git a/tests/service_tests/performance/performance_test.cc b/tests/service_tests/performance/performance_test.cc
deleted file mode 100644
index 3fafba67c4b19d1ed14fee175c1f574d8faf52f2..0000000000000000000000000000000000000000
--- a/tests/service_tests/performance/performance_test.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE.md file.
-
-#include <pthread.h>
-#include <sys/time.h>
-
-#include <cstdio>
-
-#include "include/service_api.h"
-#include "include/dartino_api.h"
-
-#include "src/shared/assert.h"
-#include "src/shared/platform.h"
-
-#include "src/vm/thread_pool.h"
-
-#include "cc/performance_service.h"
-
-static pthread_mutex_t mutex;
-static pthread_cond_t cond;
-static int status = 0;
-
-static const int kDone = 1;
-static const int kCallCount = 10000;
-
-static dartino::Monitor* echo_monitor = dartino::Platform::CreateMonitor();
-static bool echo_async_done = false;
-
-static uint64_t GetMicroseconds() {
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0) return -1;
- uint64_t result = tv.tv_sec * 1000000LL;
- result += tv.tv_usec;
- return result;
-}
-
-static void EchoCallback(int result, void* data) {
- if (result < kCallCount) {
- PerformanceService::echoAsync(result + 1, EchoCallback, NULL);
- } else {
- echo_monitor->Lock();
- echo_async_done = true;
- echo_monitor->Notify();
- echo_monitor->Unlock();
- }
-}
-
-static void RunEchoTests() {
- uint64_t start = GetMicroseconds();
- for (int i = 0; i < kCallCount; i++) {
- int result = PerformanceService::echo(i);
- ASSERT(result == i);
- }
- uint64_t end = GetMicroseconds();
- int sync_us = static_cast<int>(end - start);
- printf("Sync call took %.2f us.\n",
- static_cast<double>(sync_us) / kCallCount);
- printf(" - %.2f calls/s\n", (1000000.0 / sync_us) * kCallCount);
-
- start = GetMicroseconds();
- PerformanceService::echoAsync(0, EchoCallback, NULL);
- echo_monitor->Lock();
- while (!echo_async_done) echo_monitor->Wait();
- echo_monitor->Unlock();
- end = GetMicroseconds();
- int async_us = static_cast<int>(end - start);
- printf("Async call took %.2f us.\n",
- static_cast<double>(async_us) / kCallCount);
- printf(" - %.2f calls/s\n", (1000000.0 / async_us) * kCallCount);
-}
-
-static int CountTreeNodes(TreeNode node) {
- int sum = 1;
- List<TreeNode> children = node.getChildren();
- for (int i = 0; i < children.length(); i++) {
- sum += CountTreeNodes(children[i]);
- }
- return sum;
-}
-
-static void BuildTree(int n, TreeNodeBuilder node) {
- if (n > 1) {
- List<TreeNodeBuilder> children = node.initChildren(2);
- BuildTree(n - 1, children[0]);
- BuildTree(n - 1, children[1]);
- }
-}
-
-static void RunTreeTests() {
- const int kTreeDepth = 7;
-
- uint64_t start = GetMicroseconds();
- MessageBuilder builder(8192);
- TreeNodeBuilder built = builder.initRoot<TreeNodeBuilder>();
- BuildTree(kTreeDepth, built);
- uint64_t end = GetMicroseconds();
- printf("Building (C++) took %d us.\n", static_cast<int>(end - start));
-
- start = GetMicroseconds();
- PerformanceService::countTreeNodes(built);
- end = GetMicroseconds();
- printf("Counting (Dart) took %d us.\n", static_cast<int>(end - start));
-
- start = GetMicroseconds();
- TreeNode generated = PerformanceService::buildTree(kTreeDepth);
- end = GetMicroseconds();
- printf("Building (Dart) took %d us.\n", static_cast<int>(end - start));
-
- start = GetMicroseconds();
- CountTreeNodes(generated);
- end = GetMicroseconds();
- printf("Counting (C++) took %d us.\n", static_cast<int>(end - start));
-
- generated.Delete();
-}
-
-void EchoInThread(void* data) {
- intptr_t value = reinterpret_cast<intptr_t>(data);
- for (int i = 0; i < 64; i++) {
- int result = PerformanceService::echo(value + i);
- ASSERT(result == value + i);
- }
-}
-
-static void RunThreadTests() {
- const int kThreadCount = 32;
- dartino::ThreadPool thread_pool(kThreadCount);
- thread_pool.Start();
- for (int i = 0; i < kThreadCount; i++) {
- while (!thread_pool.TryStartThread(EchoInThread,
- reinterpret_cast<void*>(i))) {
- }
- }
- thread_pool.JoinAll();
-}
-
-static void ChangeStatusAndNotify(int new_status) {
- pthread_mutex_lock(&mutex);
- status = new_status;
- pthread_cond_signal(&cond);
- pthread_mutex_unlock(&mutex);
-}
-
-static void WaitForStatus(int expected) {
- pthread_mutex_lock(&mutex);
- while (expected != status) pthread_cond_wait(&cond, &mutex);
- pthread_mutex_unlock(&mutex);
-}
-
-static void* DartThreadEntry(void* arg) {
- const char* path = static_cast<char*>(arg);
- DartinoSetup();
- DartinoProgram program = DartinoLoadSnapshotFromFile(path);
- if (DartinoRunMain(program, 0, NULL) != 0) {
- FATAL1("Failed to run snapshot: %s\n", path);
- }
- DartinoDeleteProgram(program);
- DartinoTearDown();
- ChangeStatusAndNotify(kDone);
- return NULL;
-}
-
-static void RunSnapshotInNewThread(char* path) {
- pthread_t thread;
- int result = pthread_create(&thread, NULL, DartThreadEntry, path);
- if (result != 0) {
- perror("Failed to start thread");
- exit(1);
- }
-}
-
-static void SetupPerformanceTest(int argc, char** argv) {
- pthread_mutex_init(&mutex, NULL);
- pthread_cond_init(&cond, NULL);
- ServiceApiSetup();
- RunSnapshotInNewThread(argv[1]);
- PerformanceService::setup();
-}
-
-static void TearDownPerformanceTest() {
- PerformanceService::tearDown();
- WaitForStatus(kDone);
- ServiceApiTearDown();
-}
-
-int main(int argc, char** argv) {
- if (argc < 2) {
- printf("Usage: %s <snapshot>\n", argv[0]);
- return 1;
- }
- SetupPerformanceTest(argc, argv);
- RunEchoTests();
- RunTreeTests();
- RunThreadTests();
- TearDownPerformanceTest();
- return 0;
-}
« no previous file with comments | « tests/service_tests/performance/performance_service_impl.dart ('k') | tests/service_tests/service_tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698