From 359d88c5f4fcaa0f5cd505fa0ac2eb473648f1a6 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 9 Sep 2026 16:34:15 -0400 Subject: parallelise: show_abstraction & ocda_db as the rest Fix issue with consistency (flags run serial & parallel inconsistenly). Both write one file per document per language and share no handle, so they belong on the list with html, epub, text and sqlite_discrete. The guard above the list still takes out --pod, --pod2, --source and the shared sqlite db actions before it is reached, so those stay serial as they were; checked. However measurement tests show parallel turn out to result in a processing slowdown, on the (35) sample markup documents, run on multiple passes: run on 16 cores a slow down of about 20% for eleven times the cpu! --text 4.83-5.10 s wall 48-52 s user --text --serial 3.94-4.05 s wall 4.2-4.4 s user will make serial run the default. (assisted by Claude-Code) --- org/spine.org | 9 +++++++++ org/tests_for_document_abstraction_shell_scripts.org | 8 ++++---- src/sisudoc/spine.d | 9 +++++++++ test/test-abstraction-ssp.sh | 8 ++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/org/spine.org b/org/spine.org index 86003b9..b60fd8d 100644 --- a/org/spine.org +++ b/org/spine.org @@ -1044,7 +1044,16 @@ struct OptActions { _is = false; } } else if ( + /+ ↓ show_abstraction and ocda_db belong here for the same reason as + the rest: each writes one file per document per language and + shares no handle. --pod2 and --source, which also set + show_abstraction, and the shared sqlite db actions are taken out + by the guard above before this list is reached, so listing them + here does not parallelise those + +/ opts["abstraction"] + || show_abstraction + || ocda_db || concordance || curate || html diff --git a/org/tests_for_document_abstraction_shell_scripts.org b/org/tests_for_document_abstraction_shell_scripts.org index 932f1cd..199e109 100644 --- a/org/tests_for_document_abstraction_shell_scripts.org +++ b/org/tests_for_document_abstraction_shell_scripts.org @@ -232,10 +232,10 @@ fi echo "Generating current .ssp files..." rm -rf "$TMP_DIR" mkdir -p "$TMP_DIR" -# --abstraction is what puts this run in parallel: --show-abstraction on its -# own does not appear in spine's parallelise() list, so it runs serially and -# the parallel-vs-serial comparison below would compare a serial run with -# itself. Do not drop it. +# this run has to be the parallel one: the serial run below is what it is +# compared against, and two serial runs compare nothing. --show-abstraction +# now parallelises on its own, and --abstraction is kept as well so that the +# test does not go quietly serial if that ever changes. $SPINE_BIN --abstraction --show-abstraction --skip-output --output="$SCRIPT_DIR/current" "$SAMPLES_DIR"/* 2>&1 | tail -1 # flatten find "$SCRIPT_DIR/current" -name "*.ssp" ! -path "$TMP_DIR/*" -exec mv {} "$TMP_DIR/" \; diff --git a/src/sisudoc/spine.d b/src/sisudoc/spine.d index 2862303..ed55298 100644 --- a/src/sisudoc/spine.d +++ b/src/sisudoc/spine.d @@ -831,7 +831,16 @@ string program_name = "spine"; _is = false; } } else if ( + /+ ↓ show_abstraction and ocda_db belong here for the same reason as + the rest: each writes one file per document per language and + shares no handle. --pod2 and --source, which also set + show_abstraction, and the shared sqlite db actions are taken out + by the guard above before this list is reached, so listing them + here does not parallelise those + +/ opts["abstraction"] + || show_abstraction + || ocda_db || concordance || curate || html diff --git a/test/test-abstraction-ssp.sh b/test/test-abstraction-ssp.sh index bb44d1c..3b2217b 100755 --- a/test/test-abstraction-ssp.sh +++ b/test/test-abstraction-ssp.sh @@ -104,10 +104,10 @@ fi echo "Generating current .ssp files..." rm -rf "$TMP_DIR" mkdir -p "$TMP_DIR" -# --abstraction is what puts this run in parallel: --show-abstraction on its -# own does not appear in spine's parallelise() list, so it runs serially and -# the parallel-vs-serial comparison below would compare a serial run with -# itself. Do not drop it. +# this run has to be the parallel one: the serial run below is what it is +# compared against, and two serial runs compare nothing. --show-abstraction +# now parallelises on its own, and --abstraction is kept as well so that the +# test does not go quietly serial if that ever changes. $SPINE_BIN --abstraction --show-abstraction --skip-output --output="$SCRIPT_DIR/current" "$SAMPLES_DIR"/* 2>&1 | tail -1 # flatten find "$SCRIPT_DIR/current" -name "*.ssp" ! -path "$TMP_DIR/*" -exec mv {} "$TMP_DIR/" \; -- cgit v1.2.3