Skip to content

Commit 34be9b0

Browse files
committed
feat: add cascade benchmark scenario for dependency re-rendering
Adds 'cascade' scenario that modifies CrossRefs/Index.rst hub document to trigger cascade re-rendering of dependent documents. Results: ~1.56s average (similar to warm/partial for small docs) - Hub + 3 dependents + singlepage = 5 files re-rendered
1 parent 1c47231 commit 34be9b0

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

benchmark/benchmark-docker.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,35 @@ run_scenario() {
216216
log_success " Time: ${time_s}s, Memory: ~${memory_mb}MB, Files: $files"
217217
done
218218
;;
219+
cascade)
220+
# First run to populate cache
221+
log_info " Initial render to populate cache..."
222+
clean_caches
223+
run_benchmark_simple 0 fresh > /dev/null
224+
225+
for ((i=1; i<=RUNS; i++)); do
226+
log_info " Run $i/$RUNS (cascade - modifying CrossRefs/Index.rst hub)..."
227+
# Modify hub document to trigger cascade re-render to dependents
228+
local hub_file="$PROJECT_DIR/$DOCS_INPUT/CrossRefs/Index.rst"
229+
if [ -f "$hub_file" ]; then
230+
echo "" >> "$hub_file" # Append newline to change content hash
231+
else
232+
log_warn " CrossRefs/Index.rst not found, falling back to Index.rst"
233+
local index_file="$PROJECT_DIR/$DOCS_INPUT/Index.rst"
234+
if [ ! -f "$index_file" ]; then
235+
index_file="$PROJECT_DIR/$DOCS_INPUT/index.rst"
236+
fi
237+
echo "" >> "$index_file"
238+
fi
239+
sleep 0.1
240+
result=$(run_benchmark_simple $i) # Reuse existing cache
241+
results+=("$result")
242+
time_s=$(echo "$result" | jq -r '.total_time_seconds')
243+
memory_mb=$(echo "$result" | jq -r '.peak_memory_mb')
244+
files=$(echo "$result" | jq -r '.files_rendered')
245+
log_success " Time: ${time_s}s, Memory: ~${memory_mb}MB, Files: $files"
246+
done
247+
;;
219248
esac
220249

221250
# Extract values for aggregation
@@ -308,6 +337,7 @@ if [ "$SCENARIO" = "all" ]; then
308337
run_scenario cold
309338
run_scenario warm
310339
run_scenario partial
340+
run_scenario cascade
311341
else
312342
run_scenario "$SCENARIO"
313343
fi

0 commit comments

Comments
 (0)