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

128 lines
3.6 KiB
TeX

\section{Benchmarks}
\label{sec:benchmarks}
%% ============================================================================
\subsection{GPU EVM Kernel}
\begin{table}[h]
\centering
\small
\begin{tabular}{lrrr}
\toprule
\textbf{Metric} & \textbf{CPU} & \textbf{GPU} & \textbf{Speedup} \\
\midrule
Peak opcodes/sec & 17.7\,M & 85.9\,M & 4.85$\times$ \\
\addlinespace
\multicolumn{4}{l}{\textit{By transaction complexity (50k txs):}} \\
500 ops/tx (crossover) & --- & --- & 1.0$\times$ \\
2{,}000 ops/tx & --- & --- & 2.08$\times$ \\
5{,}000 ops/tx & --- & --- & 2.83$\times$ \\
10{,}000 ops/tx & --- & --- & 3.09$\times$ \\
\bottomrule
\end{tabular}
\caption{GPU EVM kernel performance. Apple M1 Max, 32-core Metal GPU.
Peak measured at 50k txs $\times$ 5k ops = 250M total opcodes.}
\label{tab:gpu_evm}
\end{table}
\subsection{C++ EVM vs Go EVM}
\begin{table}[h]
\centering
\small
\begin{tabular}{lrrr}
\toprule
\textbf{Implementation} & \textbf{Throughput} & \textbf{Best} & \textbf{vs Go} \\
\midrule
Go EVM (EVM only) & 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$ \\
\midrule
Go EVM (total with sigs) & 534--1{,}038\,Mgas/s & --- & --- \\
\bottomrule
\end{tabular}
\caption{EVM throughput comparison. ``EVM only'' = signatures pre-cached.
``Total with sigs'' = end-to-end including secp256k1 ecrecover.}
\label{tab:cpp_go}
\end{table}
\subsection{Profiling Breakdown}
\begin{table}[h]
\centering
\small
\begin{tabular}{lrr}
\toprule
\textbf{Phase} & \textbf{Time (10k txs)} & \textbf{Fraction} \\
\midrule
secp256k1 ecrecover & 334\,ms & 87\% \\
EVM execution & 51\,ms & 13\% \\
\midrule
Total & 385\,ms & 100\% \\
\bottomrule
\end{tabular}
\caption{Go EVM block processing breakdown. 10{,}000 ETH transfers, Apple M1 Max.}
\label{tab:profile}
\end{table}
\subsection{Parallel ecrecover}
\begin{table}[h]
\centering
\small
\begin{tabular}{lrr}
\toprule
\textbf{Configuration} & \textbf{Time} & \textbf{Speedup} \\
\midrule
1 CPU core (sequential) & 334\,ms & 1.0$\times$ \\
10 CPU cores (parallel) & 47\,ms & 7.1$\times$ \\
\midrule
End-to-end (sequential) & 385\,ms & --- \\
End-to-end (parallel sig)& 98\,ms & 3.9$\times$ \\
\bottomrule
\end{tabular}
\caption{Parallel ecrecover. 10{,}000 transactions, Apple M1 Max.}
\label{tab:ecrecover}
\end{table}
\subsection{GPU Memory Scaling}
\begin{table}[h]
\centering
\small
\begin{tabular}{rrr}
\toprule
\textbf{Transactions} & \textbf{GPU Memory} & \textbf{Per-tx} \\
\midrule
10{,}000 & 732\,MB & 73\,KB \\
50{,}000 & 3.7\,GB & 74\,KB \\
100{,}000 & 7.3\,GB & 73\,KB \\
\midrule
\multicolumn{2}{l}{Persistent state} & $\sim$5\,GB \\
\bottomrule
\end{tabular}
\caption{GPU memory consumption. Linear scaling at $\sim$73\,KB per transaction.}
\label{tab:memory}
\end{table}
\subsection{Cryptographic Acceleration}
\begin{table}[h]
\centering
\small
\begin{tabular}{lrrl}
\toprule
\textbf{Operation} & \textbf{CPU} & \textbf{GPU/Parallel} & \textbf{Speedup} \\
\midrule
Keccak-256 & 1.3\,Mhash/s & 17.1\,Mhash/s & 13.2$\times$ \\
EVM opcodes & 17.7\,M/s & 85.9\,M/s & 4.85$\times$ \\
ecrecover (10k txs) & 334\,ms & 47\,ms & 7.1$\times$ \\
\bottomrule
\end{tabular}
\caption{Measured acceleration across all benchmarked operations.}
\label{tab:accel}
\end{table}
%% ============================================================================