We're finally at a stage where we need to care about performance. While it will never be our primary focus, we ought to be able to notice and address any serious regressions, and benchmarking lets us do that.
ejtp-benchmark will take a mandatory
count argument and three optional positional arguments:
done. Each of these represents a client with a specific identity and behavior.
ping: Sends messages to pong.
pong: For every message received from ping, send a message to done.
done: Receive messages from pong.
All these clients use network interfaces rather than local ones, so you can split them across process boundaries. For example,
ejtp-benchmark 500 ping done in one terminal,
ejtp-benchmark 500 pong in another. Clients in the same process will run at local speed, as the router will forward them directly to the appropriate client, rather than through jacks.
-t tcp: Use TCP addresses, rather than UDP (default). You can store all your alternative addresses within the identities themselves, since they can contain arbitrary data.
Whatever is convenient - hopefully something that isn't skewed by the startup latency of other processes.
DONE / Accepting payments