From 3ac95f6a40d3bda989727ad7137d07e65ef4ac1d Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 29 Feb 2020 22:18:26 -0800 Subject: 6072 I just did an experiment, and test_apps is spending over half its time (95 seconds that could be 40) redundantly clearing every stream before every test. And some of those streams are _large_; the translators for SubX and Mu use streams sizes pessimistically for the largest possible program they can handle (1MB per segment). A single test (the one in assort.subx) spends 24 seconds initializing 2 1MB-segments before processing a dozen lines of text in the blink of an eye. I'm not going to speed this up. But good to know. --- 055stream.subx | 2 ++ 1 file changed, 2 insertions(+) (limited to '055stream.subx') diff --git a/055stream.subx b/055stream.subx index 1250ffdc..15d82ce6 100644 --- a/055stream.subx +++ b/055stream.subx @@ -31,6 +31,8 @@ clear-stream: # f: (addr stream byte) c7 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm32 # copy to *eax # f->read = 0 c7 0/subop/copy 1/mod/*+disp8 0/rm32/eax . . . . 4/disp8 0/imm32 # copy to *(eax+4) + # - clear all stream data + # - this isn't strictly necessary, and it can slow things down *a lot*, but better safe than sorry. # var curr/eax: (addr byte) = f->data 81 0/subop/add 3/mod/direct 0/rm32/eax . . . . . 0xc/imm32 # add to eax $clear-stream:loop: -- cgit 1.4.1-2-gfad0