So now I have 1899912 in 95 seconds, which is about 20KiB/s which is a minor improvement.
What I can do for DPIS is make it so the bytes are offered first before reading. Currently it tries to read, then fills it. If I offer first then there would be less of a chance of the pipeline stalling.
Drain before gives me 100 seconds, I will run it again.
Now it gives 88 seconds which gives me about 22KiB/s.
HuffmanTree.Traverser needs to get out of its class and in its own file.
Then perform some optimizations in that class. Following that add a
HuffmanTreeInt which uses integer based values so that there is no need
for boxing and such. Then following that would probably be a rewrite of the
inflate code so that it is much faster. Currently the inflate code has lots
of methods called, so there is much overhead and such.
Making it integer did not do much at all.
I suppose what I can do instead of stalling, would be to just retry in some conditions.
I generated an extremely simple binary that runs on Linux MIPS (big endian though). I should put these practice binaries in the repository in an encoded form.
I will need standard interfaces for the emulator for memory and such. This would be associated with the CPUState.