-
Hallo Kollegen,
ich habe es auf meiner Power 7+ Model 720 mit 7.3 getestet und habe folgendes Ergebnis.
Das RPG-Programm ist anbei.
Code:
Loops Laufzeit in Sek
-----------------------------
10.000.000 0,52s
100.000.000 5,22s
1.000.000.000 52,53s
Um es fair zu vergleichen, habe ich die Aufgabe in C++ auf meiner IBM i geschreiben.
Hier habe ich folgendes Ergebnis
Code:
Loops Laufzeit in Sek
-----------------------------
100.000.000 1,20s
1.000.000.000 21,52s
Wichtig bei der Verarbeitungsgeschwindigkeit ist auch, ob Festkomma oder Fliesskommazahlen verwendet werden.
Wenn das Result im RPG-Programm als Festkommazahl definiert ist, dann dauert es 10x länger:
z.B. Dcl-s LocResult packed(20:2);
Lösung mit RPG
PHP-Code:
ctl-opt dftactgrp(*no) main(main); //------------------------------------------------------------------// // // // Test - Performance mit PI // // // //----------------- // // R.Ross 05.2020 * // //------------------------------------------------------------------// // Main // //------------------------------------------------------------------// dcl-proc main;
dcl-s LocPi float(08) inz(3.14); dcl-s LocResult float(08); dcl-s LocInd int(10);
for LocInd = 1 to 1000000000; LocResult = LocInd/LocPi; endfor;
end-proc; //------------------------------------------------------------------//
Lösung mit C++
PHP-Code:
//------------------------------------------------------------------// // Loop mit PI // //------------------------------------------------------------------//
int main() { const float PI = 3.14159265358979f;
for (int i = 0; i < 1000000000; i++) { float result = i/PI; } }
Herzliche Grüße
Rainer
-
Intel i5-8600k - Standard CPU (6 Kerne je 3,6 Ghz, keine virtuellen)
Test mit C#
1.000.000 ~ 0.005 sek (5 ms)
10.000.000 ~ 0.020 sek (20 ms)
100.000.000 ~ 0.177 sek (177 ms)
1.000.000.000 ~ 1.737 sek
-
ich liebe Benchmarks.
Nehmen wir mal Rainers Quelle auf einer popeligen Power8 S814, 1 Core 3.06GHz. LPAR mit 0.05CPU uncapped, 4GB RAM (während da noch 8 andere LPARs laufen):
a) CRTBNDCPP PGM(QGPL/PITEST) SRCFILE(QGPL/QCPPSRC) SRCMBR(PITEST) OPTIMIZE(10)
00 20-05-05 05:55:42.549670 QWTMCEOJ QSYS 0161 *EXT
Message . . . . : Job 191390/QSECOFR/QDFTJOBD ended on 20-05-05 at 05:55:
5.985 seconds used; end code 0 .
b) CRTBNDCPP PGM(QGPL/PITEST) SRCFILE(QGPL/QCPPSRC) SRCMBR(PITEST) OPTIMIZE(40)
Message . . . . : Job 191391/QSECOFR/QDFTJOBD ended on 20-05-05 at 05:56:
.012 seconds used; end code 0 .
(Nachtrag: die Laufzeiten sind vom Programmlauf, nicht vom Compilerlauf ;-)
-
Hinzu kommt noch, dass "float" nur 8-stellige Genauigkeit hat und somit von Pi nur 8 Ziffern wirken. Double wäre der richtige Typ;-), was am Ergebnis u.U. nicht wesentlich was ändert.
Außerdem weiß ich nicht, ob die Power-CPU's einen mathematischen Co-Prozessor haben wie die Intel-Chips.
Nimm auf dem PC mal decimal bzw. currency Types.
Und wieviel Einfluss hat auf der Power die MI-Schicht?
Der MI-Interpreter muss ja die Operationen für die CPU bereitstellen, was durchaus von Nachteil ist.
Auf dem PC wird nativer CPU-Code ausgeführt. Ja nach Optimierungsstufe werden Int-Variablen noch in Register geladen u.v.m.
Da auch Holgers Test die CPU nicht alleine für sich hat (weitere 8 VM's), muss man tatsächlich eher die CPU-Zeiten des Jobs als die Laufzeiten der Aktion betrachten.
Das lässt sich mit SBMJOB's auch nicht feststellen. Bei einem anderen Kunden haben wir mal gemessen, dass der Start und das Ende eines Jobs auch bereits durchaus 3-4 Sekunden CPU-Zeit gefressen haben während die Laufzeit des Programmes lediglich knapp 2 Sekunden gedauert hatte.
Alles ist eben relativ. Ich denke ein tatsächliches Ergebnis der CPU lässt sich so direkt nicht vergleichen.
Zum Vergleich:
Ein komplexer QM-Query (Recursive-CTE, Joins, derived GroupBy-Tables, ...) läuft ca. 5 Minuten.
Das Ergebnis sind ca. 150.000 Ausgabe-Zeilen und die Statusanzeige behaupted dabei ca. 1,8 Milliarden Zeilen gelesen zu haben. Ein M$-SQL-Server scheitert da kläglich.
-
dank @Holger habe ich mein C++ Programm noch etwas optimiert und was heraus kam, war wirklich überraschend.
Im ersten Schritt habe ich nur die Variablendefinition aus der Schleife genommen, das hat gleich die Laufzeit um den Faktor 5 reduziert und dann habe ich über die Compileroptionen von 10 - 40 die Zeiten gemessen. Das Ergebnis kann sich sehen lassen.
Code:
Loops Laufzeit in Sek Optimization
-----------------------------------------------
1.000.000.000 12,200s 10
1.000.000.000 8,720s 20
1.000.000.000 0,001s 30
1.000.000.000 0,001s 40
PHP-Code:
int main() { const float PI = 3.14159265358979f; float result = 0; for (int i = 0; i < 1000000000; i++) { result = i/PI; } }
-
 Zitat von Rainer Ross
Im ersten Schritt habe ich nur die Variablendefinition aus der Schleife genommen, das hat gleich die Laufzeit um den Faktor 5 reduziert und dann habe ich über die Compileroptionen von 10 - 40 die Zeiten gemessen. Das Ergebnis kann sich sehen lassen.
Jeder gute Compiler erkennt, daß in der Schleife nix gemacht wird, was ausserhalb
verwendet wird. Da kann man die Schleife ja auch gleich überspringen.
Aber was sagt so ein Test schon aus - wie schnell eine CPU innerhalb des L3-Cache
springen kann? Das ist sehr synthetisch.
Viel interessanter wäre ein TPCH@300GB oder je nach Plattenplatz. Aber den macht man (wenns korrekt sein soll) nicht in 5 Minuten am Rande...
-h
-
Der Test ist unsinnig, da auch das Rechenergebnis unsinnig ist. Da wird allenfalls getestet, wie gut der Compiler optimiert, was Rainer Ross ja auch prima gezeigt hat.
Similar Threads
-
By Gutmann in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-12-19, 14:21
-
By Mida in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 18-05-18, 08:53
-
By Rue in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 26-03-15, 13:44
-
By as400frischling in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 10-12-13, 14:29
-
By Burgy Zapp in forum Intern - Hilfe - Feedback - Tests-Forum
Antworten: 1
Letzter Beitrag: 31-01-07, 01:54
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks