Page 1 of 1

Schwimmender Punkt gegen Ganzzahlberechnungen auf moderner Hardware

Posted: 25 Feb 2025, 06:50
by Anonymous
Ich mache einige leistungskritische Arbeiten in C ++ und wir verwenden derzeit Ganzzahlberechnungen für Probleme, die von Natur aus schwimmend sind, weil "es schneller" ist. Dies führt zu vielen nervigen Problemen und fügt viele nervige Code hinzu. IIRC) dass es einen optionalen Co-Prozessor gab. Aber heutzutage mit exponentiell komplexeren und leistungsstärkeren CPUs macht es keinen Unterschied in der "Geschwindigkeit", wenn Sie schwimmende Punkte oder Ganzzahlberechnung durchführen? Zumal die tatsächliche Berechnungszeit im Vergleich zu etwas wie einem Pipeline -Stand oder dem Abholen von etwas aus dem Hauptspeicher winzig ist? Ein guter Weg, um dies zu testen? Ich habe zwei winzige C ++ - Programme geschrieben und ihre Laufzeit mit "Zeit" unter Linux verglichen, aber die tatsächliche Laufzeit ist zu variabel (ich hilft nicht, auf einem virtuellen Server auszuführen). Kurz als mein ganzer Tag damit verbringen, Hunderte von Benchmarks zu betreiben, Diagramme usw. zu machen usw. Kann ich etwas tun, um einen vernünftigen Test der relativen Geschwindigkeit zu erhalten? Irgendwelche Ideen oder Gedanken? Bin ich völlig falsch? < /P>
Die Programme, die ich wie folgt verwendete#include
#include
#include
#include

int main( int argc, char** argv )
{
int accum = 0;

srand( time( NULL ) );

for( unsigned int i = 0; i < 100000000; ++i )
{
accum += rand( ) % 365;
}
std::cout
#include
#include
#include
#include

int main( int argc, char** argv )
{

float accum = 0;
srand( time( NULL ) );

for( unsigned int i = 0; i < 100000000; ++i )
{
accum += (float)( rand( ) % 365 );
}
std::cout