diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-02-08 17:45:04 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-02-08 17:45:04 +0200 |
| commit | d989e1e942a77749c31e82296dd6c83a97184fd0 (patch) | |
| tree | 17061e503da4d89735fdc2e92426fdf61e91b0ad /src | |
| parent | 7a69293ba820b432ae117a2e10d943acdc627d8b (diff) | |
Show timing info
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.tsx | 5 | ||||
| -rw-r--r-- | src/api.ts | 30 |
2 files changed, 10 insertions, 25 deletions
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="" @@ -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 |
