Wie schon gesagt sind fps, vor allem bei so hohen Werten nicht unbedingt aussagekräftig. Überleg dir dazu einfach folgendes:
Angenommen du hast 1000 fps dauert ein Frame zu redern 1ms.
Angenommen dein Frame dauert aufgrund einer kleinen Änderung jetzt 2ms bist du schon runter auf 500 fps.
Angenommen du hast 50 fps -> Ein Frame dauert 20ms zu rendern.
Angenommen aufgrund einer kleinen Änderung brauchst du jetzt wieder um 1ms Sekunde mehr, also 21ms pro Frame -> ca. 48 fps.
Du siehst: Zwischen der Zeit die ein Frame zu rendern braucht und der Anzahl der Frames die pro Sekunde gerendert werden können herrscht ein nichtlinearer Zusammenhang!
Bei hohen fps Werten (sehr kurze Renderzeiten) macht eine sehr kleine Änderung schon sehr viel aus während die selbe Änderung bei niedrigen fps Werten fast nicht ins Gewicht fällt.
Da du in einem echten Spiel nicht ein Sprite rendern wirst, sondern viele und dort noch viele andere Faktoren reinspielen, ist es nicht wirklich aussagekräftig zu sagen dass ein Sprite zu rendern mit 3700 fps geht, denn daraus kannst du absolut nicht ableiten wie gut die Performance in einer ernst gemeinten Anwendung der Sprite Klasse sein wird (ernste Anwendung: Viele Sprites mit vielen verschiedenen Bildern und in verschiedensten Größen und Ausrichtungen)
glBegin(GL_QUADS)
glTexCoord
glColor
glVertex
Diese Funktionen sind zwar sehr einfach und angenehm zu verwenden, kommen aber aus der Steinzeit. Wenn du wirklich eine State of the Art Superüberdrüber Spriteklasse willst solltest du dir mal was in Richtung VertexBuffer Objects und Batching und so Dinge anschauen...
Allerdings: Wenn deine vorhandene Klasse für deine Bedürfnisse ausreicht, warum dann alles kompliziert machen!?