\section{Related works} Throughput prediction tools, however, are not all static. \gus~\cite{phd:gruber} dynamically predicts the throughput of a whole program region, instrumenting it to retrieve the exact events occurring through its execution. This way, \gus{} can more finely detect bottlenecks by sensitivity analysis, at the cost of a significantly longer run time. \smallskip The \bhive{} profiler~\cite{bhive} takes another approach to basic block throughput measurement: by mapping memory at any address accessed by a basic block, it can effectively run and measure arbitrary code without context, often ---~but not always, as we discuss later~--- yielding good results. \smallskip The \anica{} framework~\cite{anica} also attempts to evaluate throughput predictors by finding examples on which they are inaccurate. \anica{} starts with randomly generated assembly snippets, and refines them through a process derived from abstract interpretation to reach general categories of problems.