Files
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

56 lines
1.9 KiB
TeX

\section{C++ EVM vs Go EVM}
\subsection{EVM-Only Throughput (Signatures Pre-Cached)}
To isolate interpreter performance, signatures are pre-verified and cached. Measurements
reflect pure EVM opcode dispatch and state access.
\begin{table}[h]
\centering
\small
\begin{tabular}{lrrr}
\toprule
\textbf{Implementation} & \textbf{Throughput} & \textbf{Best Run} & \textbf{vs Go} \\
\midrule
Go EVM (full StateDB) & 4.2--5.4\,Ggas/s & 5.4\,Ggas/s & 1.0$\times$ \\
C++ evmone++ (full state) & 20.9\,Ggas/s & 23.4\,Ggas/s & \textbf{5.1$\times$} \\
C++ evmone++ (interpreter) & 416\,Ggas/s & --- & 96$\times$$^*$ \\
\bottomrule
\end{tabular}
\caption{EVM-only gas throughput, signatures pre-cached. 10{,}000 transactions per run.
$^*$Interpreter-only number excludes state access entirely (in-memory balance tracking,
no trie, no DB); it represents the ceiling of opcode dispatch speed.}
\label{tab:cpp_vs_go}
\end{table}
The 5.1$\times$ speedup with full state comes from:
\begin{itemize}
\item No garbage collector pauses (C++ deterministic deallocation)
\item Cache-friendly memory layout (no GC headers per object)
\item Compiler-optimized opcode dispatch (computed \texttt{goto} vs switch table)
\item Inlined hash operations (no cgo FFI overhead)
\end{itemize}
\subsection{End-to-End Throughput (With Signatures)}
End-to-end numbers include secp256k1 ecrecover for every transaction:
\begin{table}[h]
\centering
\small
\begin{tabular}{lrr}
\toprule
\textbf{Implementation} & \textbf{Total Throughput} & \textbf{Notes} \\
\midrule
Go EVM (sequential) & 534--1{,}038\,Mgas/s & Workload-dependent \\
Go EVM (typical) & $\sim$546\,Mgas/s & ETH transfers, 10k txs \\
\bottomrule
\end{tabular}
\caption{End-to-end Go EVM throughput including signature verification.
The wide range reflects workload variation: simple transfers achieve higher
Mgas/s than complex DeFi due to lower gas per transaction.}
\label{tab:e2e_go}
\end{table}