Benchmarking alibre design
computare (lateinisch) = rechnen.
Im bunten Zeitalter der Windows-Welt ist dieser Begriff im Untergang.
Wer aber wie ich in der alten DOS-Umgebung mit 640 KB (!!!) Arbeitsspeicher großgeworden ist, wo jedes bit und jedes byte auf die Goldwaage gelegt wurden, der weiß, wozu ein Computer eigentlich da ist:
Ein Computer ist eine RECHENMASCHINE
und nicht ein grafisches Luxus-Ambiente mit Maustaste und 256000 Farben oder anderen Schnickschnack.
In der DOS Umgebung bildet sich im Hintern ein ganz feines Gefühl dafür heraus, ob das System überfordert ist oder läuft.
Statt Hintern kann man auch Bauch sagen.
Und mein Bauch sagt mir, mit der RECHENLEISTUNG von Alibre Design kann was nicht stimmen.
Denn 72 popelige Bohrungen hin- und rückrechnen kann nicht 20 Sekunden dauern, wenn die Systemleistung 1000mal so groß ist wie damals in DOS.
Das geht einfach nicht.
Ich will das Problem, das der Bauch meldet, mal ungefähr in Zahlen greifbar machen.
Wir machen ein BENCHMARKING.
Dafür brauchen wir zunächst eine Referenz, die uns Alibre liefern muß.
Dazu wird ein Ring mit D=180/200 linear ausgelassen, eine Bohrung von 6 mm durch die Geometrie gesetzt.
Im zweiten Schritt wird diese Bohrung linear gemustert und die Zeit gemessen.
Dazu werden 1000 Kopien mit 0.36 Grad Kreisversatz angefordert.
Ergebnis:
Um 1000 Kopien zu errechnen, braucht Alibre auf meinem PC 96 Sekunden.
Die Frage wäre natürlich, an wieviel Koordinaten eine solche Bohrung festgemacht wird. Die grafische Ausgabe ist an die Bildschirmauflösung gebunden, läßt aber auf das interne Speicherformat auch nicht rückschließen. Die interne Speicherung kann aber auch mit ganz wenigen Daten erfolgen; Durchmesser, Achse, Start- und Endpunkt und fertig.
Gehen wir mal zunächst von folgenden Koordinaten aus: Linienabstand 0.1 mm, Kreispunkte 36.
Dann errechnen sich für eine Bohrung 36*200=7200 Koordinaten. Für 1000 Bohrungen 7.200.000, also ca. 7 Mio. Koordinaten. Da jede Koordinate aus 3 Punkten im Raum besteht, sind dafür mindestens 21 Mio. Rechenvorgänge erforderlich.
Nun wollen wir da mit dem C-Compiler mal ran.
Erste Tuchfühlung: wie lange braucht ein C-Compiler, um 21 Mio. Rechnungen durchzuführen? Wir nehmen dafür zunächst mal eine Multiplikation von Integer (Ganzzahlen).
Erwartungsgemäß ist die Zeit nicht meßbar, das sind Millisekunden. Um einen gefühlten Wert zu erhalten, erhöhen wir die Anzahl der Integer-Multiplikationen auf eine Milliarde. Ermittelte Zeit für 1 Milliarde Multiplikationen = ca. 3.5 Sekunden.
Tja, C ist eben eine maschinennahe Sprache und sauschnell.
Nun, wir haben es hier aber nicht mit integer, sondern mit Fließ
komma zu tun.
Das ändern wir und lassen den C-Compiler Float-Multiplikationen durchführen. Wir multiplizieren 1 Milliarde mal eine Fließkomma mit pi.
Ergebnis: ca. 4.5 Sekunden.
Damit können wir im Benchmarking eine erste EIngangsbewertung abgeben:
Alibre braucht für angenommene 21 Mio. Koordinaten 96 Sekunden.
Der C-Compiler braucht für 1 Mrd. Multiplikationen 4.5s, für 100 Mio. 0.45s, für 20 Mio Multiplikationen 0.09 Sekunden.
Jetzt müssen wir nur noch 96 durch 0.09 dividieren und erhalten als vorläufigen
BENCHMARK = 1066.666666666
Der C-Compiler kalkuliert auf demselben PC-System ca. 1000mal schneller als Alibre.
Das ist aber noch sehr wohlwollend gerechent. Nehmen wir mal die max. Bildschirmauflösung von 72 dpi (dots per inch), kommen wir auf ca. 3 Punkte pro lfd. mm, also auf einen Linienabstand von nicht 0.1, sondern 0.3.
Dann wäre die Rechenleistung nicht um den Faktor 1000, sondern um den Faktor 3000 schlechter als ein C-Compiler so herangeht.
Kann mir mal jemand erklären, was und wie so eine 3DCAD rechnet?
Sitzt da einer mit dem Taschenrechner auf der Platine und tippt die Koordinaten mit der Hand ein?
Mein Verdacht ist, das ist gar nicht originär programmiert, sondern sitzt auf einer Datenbank_Tertiärsprache auf.
Anders läßt sich so ein krasser "Lahmarschigkeitsbonus" eigentlich nicht erklären.
Gruß Sharky
Der Beitrag wurde von sharky bearbeitet: 10.09.2010, 15:17 Uhr