perf test: allow comparison of multiple sdpr / global spdr
reduce cache line sharing protection buffer
build event on the stack then record

Build the event on the stack before recording it to the log,
so that we can later make sure the calls to the clocks are
made with maximum use of the cache.

This requires us to not allocate the clock together with the events,
so that we do not confuse memory that is often read from memory
that is often written.
improve cache locality by having clock close in read arena

Clock lookups were slow because we had the clock in the event arena,
in close quarters with the writable data. Pulling it out in the read
section reduces overhead when occupying multiple cores.

A further optimization would be to not having to read anything. This
would be accomplished by storing opaque timestamps and doing the
conversion to microseconds at reporting time only.