gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-wallet-webex] 01/01: benchmark


From: gnunet
Subject: [GNUnet-SVN] [taler-wallet-webex] 01/01: benchmark
Date: Thu, 20 Sep 2018 20:55:10 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-webex.

commit 1751ecb163d28da20863d463e4f21322ad1cb9ff
Author: Florian Dold <address@hidden>
AuthorDate: Thu Sep 20 20:53:38 2018 +0200

    benchmark
---
 src/webex/pages/benchmark.html |  17 +++++++
 src/webex/pages/benchmark.tsx  | 111 +++++++++++++++++++++++++++++++++++++++++
 src/webex/pages/common.ts      |  31 ++++++++++++
 3 files changed, 159 insertions(+)

diff --git a/src/webex/pages/benchmark.html b/src/webex/pages/benchmark.html
new file mode 100644
index 00000000..a593d1e3
--- /dev/null
+++ b/src/webex/pages/benchmark.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>Taler Wallet: Benchmarks</title>
+    <link rel="stylesheet" type="text/css" href="../style/wallet.css">
+    <link rel="icon" href="/img/icon.png">
+    <script src="/dist/page-common-bundle.js"></script>
+    <script src="/dist/benchmark-bundle.js"></script>
+  </head>
+  <body>
+  <section id="main">
+    <h1>Benchmarks</h1>
+    <div id="container"></div>
+  </section>
+  </body>
+</html>
diff --git a/src/webex/pages/benchmark.tsx b/src/webex/pages/benchmark.tsx
new file mode 100644
index 00000000..1d91ac0b
--- /dev/null
+++ b/src/webex/pages/benchmark.tsx
@@ -0,0 +1,111 @@
+/*
+ This file is part of TALER
+ (C) 2015 GNUnet e.V.
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+
+
+/**
+ * Benchmarks for the wallet.
+ *
+ * @author Florian Dold
+ */
+
+import * as i18n from "../../i18n";
+
+import { runOnceWhenReady } from "./common";
+
+import { BenchmarkResult } from "../../walletTypes";
+
+import * as wxApi from "../wxApi";
+
+import * as React from "react";
+import * as ReactDOM from "react-dom";
+
+
+interface BenchmarkRunnerState {
+  repetitions: number;
+  result?: BenchmarkResult;
+  running: boolean;
+}
+
+
+function BenchmarkDisplay(props: BenchmarkRunnerState) {
+  const result = props.result;
+  if (!result) {
+    if (props.running) {
+      return <div>Waiting for results ...</div>;
+    } else {
+      return <div></div>;
+    }
+  }
+  return (
+    <>
+    <h2>Results for {result.repetitions} repetitions</h2>
+    <table className="pure-table">
+      <thead>
+      <tr>
+        <th>{i18n.str`Operation`}</th>
+        <th>{i18n.str`time (ms/op)`}</th>
+      </tr>
+      {
+        Object.keys(result.time).sort().map(
+          k =>
+            <tr>
+              <td>{k}</td>
+              <td>{result.time[k] / result.repetitions}</td>
+            </tr>
+        )
+      }
+      </thead>
+    </table>
+    </>
+  );
+}
+
+class BenchmarkRunner extends React.Component<any, BenchmarkRunnerState> {
+  constructor(props: any) {
+    super(props);
+    this.state = {
+      repetitions: 10,
+      running: false,
+    };
+  }
+
+  async run() {
+    this.setState({ result: undefined, running: true });
+    let result = await wxApi.benchmarkCrypto(this.state.repetitions);
+    this.setState({ result, running: false });
+  }
+
+  render() {
+    return (
+      <div>
+        <label>Repetitions:</label>
+        <input type="number"
+               value={this.state.repetitions}
+               onChange={(evt) => this.setState({ repetitions: 
Number.parseInt(evt.target.value) })} />
+        {" "}
+        <button onClick={() => this.run()}>Run</button>
+        <BenchmarkDisplay {...this.state} />
+      </div>
+    );
+  }
+}
+
+
+runOnceWhenReady(() => {
+  ReactDOM.render(<BenchmarkRunner />, document.getElementById("container")!);
+  // Will be used by the backend to detect when the popup gets closed,
+  // so we can clear notifications
+});
diff --git a/src/webex/pages/common.ts b/src/webex/pages/common.ts
new file mode 100644
index 00000000..695e5fc1
--- /dev/null
+++ b/src/webex/pages/common.ts
@@ -0,0 +1,31 @@
+/*
+ This file is part of TALER
+ (C) 2018 GNUnet e.V.
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ * Common helper functions for all web extension pages.
+ */
+
+/**
+ * Make sure that a function is executed exactly once
+ * after the DOM has been loaded.
+ */
+export function runOnceWhenReady(f: () => void): void {
+  if (document.readyState === "loading") {
+    document.addEventListener("DOMContentLoaded", f);
+    return;
+  }
+  f();
+}

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]