diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-02-29 22:18:26 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-02-29 22:36:03 -0800 |
commit | 3ac95f6a40d3bda989727ad7137d07e65ef4ac1d (patch) | |
tree | 9cfb6ae13fa4340bacbd0a0ec982559f473298bb | |
parent | 7ae5b7136800ffb4f3d49777029a7cc9653ec029 (diff) | |
download | mu-3ac95f6a40d3bda989727ad7137d07e65ef4ac1d.tar.gz |
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.
-rw-r--r-- | 055stream.subx | 2 | ||||
-rw-r--r-- | run_one_test.subx | 2 |
2 files changed, 3 insertions, 1 deletions
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: diff --git a/run_one_test.subx b/run_one_test.subx index def4c430..37d72ea0 100644 --- a/run_one_test.subx +++ b/run_one_test.subx @@ -9,7 +9,7 @@ Entry: # Heap = new-segment(64KB) # . . push args 68/push Heap/imm32 - 68/push 0x10000/imm32/64KB + ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Heap-size/disp32 # push *Heap-size # . . call e8/call new-segment/disp32 # . . discard args |