aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-02-08 17:45:04 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2022-02-08 17:45:04 +0200
commitd989e1e942a77749c31e82296dd6c83a97184fd0 (patch)
tree17061e503da4d89735fdc2e92426fdf61e91b0ad
parent7a69293ba820b432ae117a2e10d943acdc627d8b (diff)
Show timing info
-rw-r--r--package-lock.json8
-rw-r--r--package.json4
-rw-r--r--src/Editor.tsx5
-rw-r--r--src/api.ts30
4 files changed, 16 insertions, 31 deletions
diff --git a/package-lock.json b/package-lock.json
index 367da34..7cb902f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -25,7 +25,7 @@
"eslint": "8.8.0",
"eslint-plugin-react": "7.28.0",
"puppeteer": "13.2.0",
- "slam-types": "git://github.com/jantuomi/slam-types.git#441a72c",
+ "slam-types": "git://github.com/jantuomi/slam-types.git#9de4a1e",
"typescript": "^4.4.4",
"vite": "^2.7.2",
"vitest": "0.2.7"
@@ -4381,7 +4381,7 @@
},
"node_modules/slam-types": {
"version": "1.0.0",
- "resolved": "git+ssh://git@github.com/jantuomi/slam-types.git#441a72c04cfc61dfead5cad37202a1da87a44499",
+ "resolved": "git+ssh://git@github.com/jantuomi/slam-types.git#9de4a1ee520063025a9b2cd592a364e28cdd24dc",
"dev": true,
"license": "ISC"
},
@@ -8224,9 +8224,9 @@
}
},
"slam-types": {
- "version": "git+ssh://git@github.com/jantuomi/slam-types.git#441a72c04cfc61dfead5cad37202a1da87a44499",
+ "version": "git+ssh://git@github.com/jantuomi/slam-types.git#9de4a1ee520063025a9b2cd592a364e28cdd24dc",
"dev": true,
- "from": "slam-types@git://github.com/jantuomi/slam-types.git#441a72c"
+ "from": "slam-types@git://github.com/jantuomi/slam-types.git#9de4a1e"
},
"slash": {
"version": "3.0.0",
diff --git a/package.json b/package.json
index f5b0432..3adcdf4 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,9 @@
"eslint": "8.8.0",
"eslint-plugin-react": "7.28.0",
"puppeteer": "13.2.0",
- "slam-types": "git://github.com/jantuomi/slam-types.git#441a72c",
+ "slam-types": "git://github.com/jantuomi/slam-types.git#9de4a1e",
"typescript": "^4.4.4",
"vite": "^2.7.2",
"vitest": "0.2.7"
}
-}
+} \ No newline at end of file
diff --git a/src/Editor.tsx b/src/Editor.tsx
index 8cf6901..f549fc8 100644
--- a/src/Editor.tsx
+++ b/src/Editor.tsx
@@ -87,7 +87,10 @@ const Editor = () => {
</div>
)
case "success": {
- const text = `Output:\n${result.data}`
+ const apiTimeMillis = (result.data.apiTime / 1000).toFixed(1)
+ const executionTimeMillis = (result.data.executionTime / 1000).toFixed(1)
+ const roundtripTime = (result.data.roundtripTime).toFixed(1)
+ const text = `Output:\n${result.data.result}\nTotal roundtrip time: ${roundtripTime} ms\nServer processing time: ${apiTimeMillis} ms\nExecution time: ${executionTimeMillis} ms`
return (
<AceEditor
mode=""
diff --git a/src/api.ts b/src/api.ts
index be0c7a1..2670e3c 100644
--- a/src/api.ts
+++ b/src/api.ts
@@ -76,35 +76,14 @@ export const useExamples = () => mapSWRResult<ExampleApi.ListResponse.Body, Erro
useSWR(ExampleApi.ListRequest.path, fetcher(EXAMPLE_API_URL)),
)
-export type SubmitResult = APIResult<RunnerApi.SubmitResponse.Body["result"], Error>
-
-const postSource = async (text: string): Promise<SubmitResult> => {
- const apiResult = await postRequest<RunnerApi.SubmitRequest.Body, RunnerApi.SubmitResponse.Body, Error>(
- {
- baseUrl: RUNNER_API_URL,
- path: RunnerApi.SubmitRequest.path,
- body: {
- source: text,
- },
- },
- )
-
- switch (apiResult.type) {
- case "success":
- return { type: "success", data: apiResult.data.result }
- case "failed":
- return { type: "failed", error: apiResult.error }
- case "not_yet_requested":
- case "loading":
- return apiResult
- }
-}
+export type SubmitResult = APIResult<RunnerApi.SubmitResponse.Body & { roundtripTime: number }, Error>
export const useSubmitSource = () => {
const [result, setResult] = useState<SubmitResult>({ type: "not_yet_requested" })
const submitSource = async (text: string) => {
try {
+ const startRoundtripTime = performance.now()
setResult({ type: "loading" })
const apiResult = await postRequest<RunnerApi.SubmitRequest.Body, RunnerApi.SubmitResponse.Body, Error>(
{
@@ -115,10 +94,13 @@ export const useSubmitSource = () => {
},
},
)
+ const endRoundtripTime = performance.now()
+ const roundtripTime = endRoundtripTime - startRoundtripTime
switch (apiResult.type) {
case "success":
- setResult({ type: "success", data: apiResult.data.result })
+ setResult({ type: "success", data: { ...apiResult.data, roundtripTime }})
break
+
case "failed":
setResult({ type: "failed", error: apiResult.error })
break