Skip to content

Commit 97f52c7

Browse files
committed
quarto preview ipynb performance: record results from initial render; use mtime for cache check
1 parent 511685e commit 97f52c7

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/project/serve/render.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { isAbsolute, join } from "path/mod.ts";
22

33
import { RenderResult } from "../../command/render/types.ts";
44
import { md5Hash } from "../../core/hash.ts";
5+
import { isJupyterNotebook } from "../../core/jupyter/jupyter.ts";
56
import { PromiseQueue } from "../../core/promise.ts";
67
import { projectOutputDir } from "../project-shared.ts";
78
import { ProjectContext } from "../types.ts";
@@ -71,9 +72,18 @@ export class ServeRenderManager {
7172
return hash;
7273
}
7374
}, "");
74-
return md5Hash(Deno.readTextFileSync(file)) +
75-
md5Hash(Deno.readTextFileSync(inputFile)) +
76-
resourceHash;
75+
// very large jupyter notebooks can take a long time to hash
76+
// (~ 2 seconds for every 10mb) so we use the slightly less
77+
// robust file modification time in that case
78+
if (isJupyterNotebook(inputFile)) {
79+
return String(Deno.statSync(file).mtime) +
80+
String(Deno.statSync(inputFile).mtime) +
81+
resourceHash;
82+
} else {
83+
return md5Hash(Deno.readTextFileSync(file)) +
84+
md5Hash(Deno.readTextFileSync(inputFile)) +
85+
resourceHash;
86+
}
7787
}
7888

7989
private fileRenders_ = new Map<string, string>();

src/project/serve/serve.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,9 @@ export async function serveProject(
220220
) as string[]);
221221

222222
// render manager for tracking need to re-render outputs
223+
// (record any files we just rendered)
223224
const renderManager = new ServeRenderManager();
225+
renderManager.onRenderResult(renderResult, resourceFiles, project);
224226

225227
// function that can return the current target pdf output file
226228
const pdfOutputFile = (finalOutput && pdfOutput)

0 commit comments

Comments
 (0)