Hi Syd,

 

I have put it at the end of the document for now:

https://docs.google.com/document/d/1UhCg76_AgnS5PW0g_EN6zPZE4tTUs0bNeMXFVmZ4VuQ/edit#

 

Best,

Martina

 

Von: Tei-council <tei-council-bounces@lists.tei-c.org> Im Auftrag von Bauman, Syd
Gesendet: Dienstag, 5. April 2022 19:32
An: tei-council@lists.tei-c.org
Betreff: [Tei-council] faster testing

 

One of the reasons the test procedure in Stylesheets/Test2/ is dramatically faster than the one in Stylesheets/Test/ is that it is, by default, run in parallel.[1,2]

 

You can also ask the make​ command to run multiple jobs at once. The switches that control this are --jobs= and --output-sync=. I just tried an experiment, comparing how long it took to run make​ vs make --jobs=7 --output-sync=lines. (I chose 7 because my system has 8 threads, and I wanted to have some CPU available. What little I have found on the web seems to suggest I may as well go ahead and use 8.)

 

The result was faster, although not even close to 7 times faster: down to 03:32 from 04:36. I compared the output of the 2 commands, and they were identical.

 

On GNU/Linux, at least, the nproc​ command will tell you how many threads are available. Thus using the command

$ make --jobs=`nproc 2>/dev/null || echo 1` -Oline

seems to make sense to me. (-O is shorthand for --output-sync=​.)

 

It is also possible to get the Makefile to do that on its own. My first thought is that might not be such a good idea, because you may want to run with --jobs=1 in order to force error messages into the right order. (I.e., in case -Oline wasn’t good enough.)

 

I ran the experiment again, this time using --jobs=8 and getting screen captures of the process monitor roughly 40 s after the make command started.[3] The timing results were very similar (down to 03:36 from 04:36), but the order of output lines was different. (Same output; i.e., they were identical after sorting and removing timestamps.)

 

So I think anyone running the Stylesheets test process would do well to use the --jobs switch. You could use any of

Martina — could you either update the notes we have about updating P5 subset, or remind me where they are and I will? Thanks.

 

Notes

[1] ant test​ runs them in parallel; if you want them in series (likely because the order of messages was confusing when run in parallel) use ant testSeries​.

[2] There are other reasons, like it is written to be less redundant, and the JVM is only spun up once, rather than once for every test.

[3] For evidence as to why --jobs makes make​ faster, see

     https://bauman.zapto.org/~syd/temp/4TEICouncil/Screenshot_of_make_process_monitor_2022-04-05T12:07:52.png

     and

     https://bauman.zapto.org/~syd/temp/4TEICouncil/Screenshot_of_make_-j_process_monitor_2022-04-05T12:12:32.png