Einen Ausweg bieten Benchmark-Programme, die für einen bestimmten Bereich der Programmierung (z.B. numerische Programmierung, Systemprogrammierung) repräsentativ sind. Sie wurden entweder als »Kernels« aus häufig durchlaufenen Programmteilen von realen Anwendungsprogrammen herausdestilliert oder als synthetische Benchmarkprogramme eigens zur Leistungsmessung konstruiert.
Heute werden vor allem Whetstone und Linpack (für Numerik-Programmierung) sowie Dhrystone (für System-Programmierung) eingesetzt. Wenn auch synthetische Benchmark-Programme den Vorteil haben, dass sich ihre Eigenschaften wie die Prozentzahlen für die verschiedenen Statement-Arten und Datentypen beobachteten Programmprofilen gut anpassen lassen, haben sie doch zwei wesentliche Nachteile:
1. Leichte Manipulation
Bei der Kürze der Programme fällt es Compiler-Autoren verhältnismäßig leicht, die Codeerzeugung und die Auswahl der Optimierungen auf diese Benchmarks abzustimmen; einzelne Elemente des Benchmarkprogramms können dann bei gezielt ausgewählten Codeoptimierungen die Laufzeit überproportional beeinflussen.
2. Keine realistischen Bedingungen
Da die Programme verhältnismäßig kurz sind (Whetstone: meist unter 256 byte pro Modul, Linpack/saxpy: 240 byte, Dhrystone: ca. 1000 byte, Codelänge-Angaben für die Meßschleifen oder (bei Linpack) für das die Ausführungszeit dominierende Unterprogramm »saxpy«, kompiliert für VAX 11 mit Compilern von Berkeley UNIX), werden sie fast vollständig aus dem Cache heraus ausgeführt, das Speichersystem wird - außer bei Linpack für den Datenbereich - nicht realistisch getestet.
Aus diesem Grund hat sich SPEC zur Aufgabe gemacht, große Anwendungsprogramme zu sammeln und in normierter Form als Benchmark-Suite zur Verfügung zu stellen. Dies ist ein nichttriviales Unternehmen, da viele Programme, die vorher neben den kurzen Benchmarks für Leistungsmessungen verwendet wurden (z.B. nroff, yacc), eine UNIX-Lizenz erfordern und daher nicht frei weitergegeben werden können.
Die erste SPEC-Suite wurde im Herbst 1989 freigegeben, sie umfasste zehn Programme mit zusammen etwa 150.000 Zeilen Quellcode. Vier der Programme sind in C geschrieben, sechs in FORTRAN. Auch die Charakteristiken der Programme sind unterschiedlich. Bei manchen (z.B. »matrix 300«) hat der Code hohe Lokalität, bei anderen durchläuft der Befehlsstrom viele Teile des Programms relativ gleichmäßig. Die Programme wurden vom »Steering Committee« von SPEC aus über 50 Vorschlägen ausgewählt. Sie machen zwar einige Betriebssystem-Aufrufe (die Programme sind unter UNIX ablauffähig, wurden jedoch auch mit VMS gemessen), sind aber so CPU-intensiv, dass die Laufzeit für die Betriebssystem-Funktionen vernachlässigt werden kann.