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.
This commit is contained in:
parent
7ae5b71368
commit
3ac95f6a40
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue