-
Notifications
You must be signed in to change notification settings - Fork 130
Make Solidity MIPS faster! #16
Comments
It's running at 85khz now. |
73610000 steps to validate a 5 tx block. That's 14.4 minutes...too slow. It's over 1B instructions for a reasonable block. Need speed of 2 MHz for this to work, 23x faster. 772 EVM ops / MIPS op. This can be reduced a lot. (can it?) evm runs at ~50mhz. 40 x86 ops / EVM op. |
Starting to just accept we'll have to have two implementations, one using unicorn and one using mipsevm. Though, before responding to a challenge, we can check all the transitions in parallel from checkpoints (generated with unicorn, say every 1M instructions + start/end). 24 cores = 23x. The checkpointing is needed to play the binary search game quickly anyway. And it's about 110 kHz now (could likely be around 200 with more gas optimization, bad choice if it's too unreadable) Also going to refactor btcec to not have a 200M instruction decompression. |
I'm happy with the speed of it now. We'll need two implementations regardless, at least one is just unicorn (aka qemu) and not custom code. |
It's running 5M+ instructions without issue now, but it's a bit too slow to use in practice. I really don't want to maintain two implementations.
Profile and optimize, the dream is to run small blocks in 1 minute and large blocks in 10.
We can of course fast forward to the input oracle read, but that's meh.
The text was updated successfully, but these errors were encountered: