Hallo hanabee,
und herzlich willkommen im SolidWorks Brett auf CAD.de 
Wie Günter schon gesagt hat, das ist ein recht diffizieles Thema, wenn du das richtig anpacken willst. Zunächst mal der Begriff "Rechnerzeit", da hat Günter ja schon einiges zu geschrieben. Ich möchte noch zusätzlich anmerken, dass die reine CPU Zeit dabei zwar ganz interessant ist, aber bei weitem nicht der Weisheit letzter Schluß. "Performance", um die es bei solchen Fragen zumeist geht, ist weit mehr als die Zeit, in der die CPU mal nicht nur Wärme erzeugt, sondern richtig am rechnen ist.
Dazu gehören solche Dinge wie Handhabungsmöglichkeit durch den Anwender, betrachten der Prozesskette, Reproduzierbarkeit. Beispiel Anwender: wenn du ein Dummy von Hand erzeugst, wirst du nur einfache, wichtige Geometrien übernehmen, sinnvollerweise z.B. Anschlussachse, Verknüpfungsflächen usw. definieren. Die findet anschließend beim Verknüpfen in der nächsten Baugruppe ein Anwender viel leichter wieder als sich in einem abgespeicherten Part selbst da ran zu klicken. Verliert der Anwender durch einmal falsch anklicken einer Kante oder Fläche auch nur 2 Sekunden ist u.U. ein "Rechnerzeitvorteil" von 0.1 Sekunde schon den Bach runter.
Zum Ermitteln der verschiedenen Zeiten und zum Beurteilen der reinen Rechnerzeit solltest du das ganze Messen, wie Günter geschrieben hat automatisiert, statistisch gemittelt über ein paar Hundert Durchläufe mit verschiedensten Modellen und Formen. Vorher festlegen, was überhaupt gemessen werden soll (wieder die Frage nach der Rechnerzeit). Du musst dafür Sorge tragen, dass du Laborbedingungen aufweisen kannst, also z.B. immer 1.000 Durchläufe per Makro direkt nach dem Booten von Windows, Starten von SolidWorks, reduziertem oder vollständigem Laden der Komponenten, mit und ohne Netzwerkanschluss, mit und ohne Virenwächter, mit und ohne PDM System usw. usw.
Es ist wichtig, diese Rahmenbedingungen festzulegen, zu beachten und zu bewerten. Demgegenüber können dann Tests in einer "realen" Arbeitsumgebung gemacht werden, am besten zu verschiedenen Tageszeiten, mit willkürlicher oder aufgezwungener Last (z.B. paralleles Scannen mit Antivirus, Download eines Servicepacks oder Abgleichen von Outlook etc.)
Wenn du das alles gemacht hast würde ich mich sehr freuen, wenn du deine Ergebnisse hier veröffentlichen könntest; wenn es eine Seminararbeit oder so etwas ist wäre das super, du hast hier sicherlich eine Plattform für die Diskussion und Überlegungen, wenn du zeigst, dass du an einer wissenschaftlichen Auswertung interessiert bist - das sind die meisten hier sicherlich auch, denn das ist durchaus eine sehr interessante Frage.
Für einen Anfang hab ich dir ein Beispielmakro gemacht, das dir beispielhaft zeigt, wie das mit der Zeitmessung gehen kann und dir auch demonstriert, dass bei mehreren Durchläufen durchaus unterschiedliche Werte rauskommen können und das das "Umfeld" eine sehr entscheidende Rolle dabei spielt.
Code:
' **********************************************************************
' * Makro zeigt als Beispiel, wie hochauflösende Zeitmessungen innerhalb
' * des Programmablaufs gemessen werden können. Hier als Beispiel das
' * Neuzeichnen, ein einfaches Rebuild und ein Fullrebuild des aktuellen
' * Modells
' *
' * 05.01.2010 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' *
' **********************************************************************' von http://www.vbarchiv.net/tipps/tipp_1124-genaue-zeitmessung-im-10000stel-sekundenbe reich.html
' zunächst die benötigten API-Deklarationen
Private Declare Function QueryPerformanceFrequency Lib "kernel32" ( _
lpFrequency As Currency) As Long
Private Declare Function QueryPerformanceCounter Lib "kernel32" ( _
lpPerformanceCount As Currency) As Long
' exakte Zeitmessung
Public Function TimerEx() As Currency
Static nFreq As Currency
If nFreq = 0 Then
QueryPerformanceFrequency nFreq
End If
Dim nTimer As Currency
QueryPerformanceCounter nTimer
TimerEx = nTimer / nFreq
End Function
Sub main()
Dim swApp As Object
Dim ModelDoc2 As Object
Dim nTimeStart As Currency
Dim nTimeEnd As Currency
Dim msg As String
' an aktives Dokument anhängen
Set swApp = CreateObject("SldWorks.Application")
Set ModelDoc2 = swApp.ActiveDoc
' jetzt jeweils ein Block mit den Zeitmessungen
' ######### grafischer Neuaufbau ############
' Startzeitpunkt merken
nTimeStart = TimerEx
' normales Rebuild ausführen
ModelDoc2.GraphicsRedraw2
' und Zeit merken, wenn sich der Befehl zurückmeldet
nTimeEnd = TimerEx
msg = msg & "GraphicsRedraw2: " & (nTimeEnd - nTimeStart) & " sec" & vbCrLf
' ######### einfaches EditRebuild ############
' Startzeitpunkt merken
nTimeStart = TimerEx
' normales Rebuild ausführen
ModelDoc2.EditRebuild3
' und Zeit merken, wenn sich der Befehl zurückmeldet
nTimeEnd = TimerEx
msg = msg & "EditRebuild: " & (nTimeEnd - nTimeStart) & " sec" & vbCrLf
' ######### ForceRebuild nur ModelDoc ############
' Startzeitpunkt merken
nTimeStart = TimerEx
' normales Rebuild ausführen
ModelDoc2.ForceRebuild3 (True)
' und Zeit merken, wenn sich der Befehl zurückmeldet
nTimeEnd = TimerEx
msg = msg & "ForceRebuild3: " & (nTimeEnd - nTimeStart) & " sec" & vbCrLf
MsgBox msg
End Sub
Ich bin gespannt auf weitere Fragen, Diskussionen un deine Ergebnisse.
Ciao,
Stefan
------------------
Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Stefans SolidWorks Blog
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP