Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unterschiedliche Rechenleistung

Unterschiedliche Rechenleistung
26.11.2018 17:40:04
yogi
Hallöchen
Ich habe da ein Makro, das läuft auf diversen Rechnern mit verschiedene Windows Versionen, _
unterschiedlichen Excel Versionen und unterschiedlichen CPU's.
Rechner 1
=========
Prozessor Intel® Core™ i7-4790
3.6 GHz
RAM 8 GB
System 64 Bit
Windows W7 Professional
Office Microsoft Excel 2010
Ausführungszeit des Makros (Sec): 0.06
Rechner 2
=========
Prozessor Intel(R) Pentium® CPU N4200
1.1GHz
RAM 8 GB
System 64-Bit, x64-basierter Prozessor
Windows W10 Home
Version 1803
Build 17134.407
Office MS Office Home and Student 2016
Ausführungszeit des Makros (Sec) 7.18
Das heisst, auf Rechner 2 braucht das Makro rund 120 mal länger! Ist das normal?
Gruss
yogi

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterschiedliche Rechenleistung
26.11.2018 18:04:23
Werni
Hallo
Je nach dem braucht Excel VBA grosse Rechenleistung.
Und da ist vor Allem die Taktgeschwindigkeit wichtig.
Du hast einmal 1.1GHz und einmal 3.6GHz getaktet.
Und das ist ein recht grosser Unterschied.
Gruss Werni
Wer misst, misst Mist...
26.11.2018 18:11:36
EtoPHG
Hallo Yogi,
Reine CPU Leistungen siehe https://www.cpubenchmark.net
Benchmark sagt CPU 1 ist mind. 4x schneller als CPU 2
Kommen dazu:
OS Unterschiede und XL Versionsunterschiede und v.a. wie sieht der VBA Code aus.
Also klare Antwort ( Ist das normal? ) Ja und Nein ;-)
Gruess Hansueli
AW: Unterschiedliche Rechenleistung
26.11.2018 18:46:33
onur
Dann kommt evtl. noch hinzu, dass vielleicht bei dem einen Rechner Multithread-Berechnung deaktiviert bzw nicht alle Kerne/Threads für Excel freigegeben sind und vielleicht sogar die Priorität für Excel niedriger ist als bei dem Anderen.
Anzeige
@onur
26.11.2018 19:43:16
RPP63
Seit wann beherrscht VBA Multithread?
Meines Wissens kann es immer noch lediglich einen Prozessor-Kern ansprechen.
Gruß Ralf
AW: @onur
26.11.2018 19:56:27
onur
Ja schon, aber weisst du denn, was der Code genau macht?
z.B. Worksheet-Funktionen benutzen, Calculate auslösen, Bildschirmaktualisierung usw.
Deswegen kann man das nicht von vorn herein ausschliessen.
AW: Unterschiedliche Rechenleistung
27.11.2018 10:16:17
yogi
Hallöchen
zuerst mal Dank für die Hinweise.
Dass Rechner mit höherer Taktfrequenz und schnellerem RAM schneller sind, ist mir schon klar. Doch mit 3mal höherer Taktfrequenz erwarte ich keinen Faktor 120 Beschleunigung. Bei allen Rechnern beträgt die CPU-Belastung durch Excel während dem Rechnen ca 17%, bei einer gesamtbelastung der CPU von ca. 19%.
Der Code sieht so aus:
Sub set_trace(sub_is As String)
Const indents = "    "
Dim entry_nr As Long
Dim aktion As String
Dim check_level As Long
Dim name_agenda_daten As String
If aktuelle_aktion > 20 Then
aktion = "unbekannt"
Else '  aktuelle_aktion > 20
aktion = akt(aktuelle_aktion)
End If '  aktuelle_aktion > 20
name_agenda_daten = ThisWorkbook.Worksheets("Agenda_Program").Range("name_agenda_daten")
' check level püfen
If IsNumeric(Left(sub_is, 1)) Then
check_level = Val(sub_is)
With Workbooks(name_agenda_daten).Worksheets("Trace")
If .Range("rg_check_level") >= check_level Then
.Unprotect (blatt_pw)
' Einrücken setzen
If InStr(1, sub_is, " - start", vbTextCompare) > 0 Then
.Range("rg_trace_indent") = .Range("rg_trace_indent") & "    "
End If '  InStr(1, sub_is, " - start", vbTextCompare) > 0
' Eintrag retten
entry_nr = .Range("rg_trace_nr") + 1
.Cells(entry_nr, 2) = .Range("rg_trace_indent") & sub_is & " - " & aktuelle_aktion & " : _
" & Timer 'Format(Now(), "mm:ss.0") '
.Range("rg_last_trace") = .Cells(entry_nr, 2)
' Einrücken setzen
If InStr(1, sub_is, "exit", vbTextCompare) > 0 Then
If Len(.Range("rg_trace_indent")) > 0 Then
.Range("rg_trace_indent") = Left(.Range("rg_trace_indent"), Len(.Range(" _
rg_trace_indent")) - 4)
End If '  Len(.Range("rg_trace_indent")) > 0
End If '  InStr(1, sub_is, "exit", vbTextCompare) > 0
.Range("rg_trace_nr") = entry_nr
End If '  .Range("rg_check_level") >= check_level
.Protect (blatt_pw)
End With '  Workbooks(name_agenda_daten).Worksheets("Trace")
End If '  IsNumeric(Left(sub_is, 1))
End Sub
Die zugehörige Testroutine sieht so aus:
Sub test_trace()
Dim time_start As Double
Dim time_stop As Double
Dim time_is As Double
Dim loop_count As Long
Dim answ As Long
Dim total_time As Double
Application.ScreenUpdating = False
time_start = Timer
For loop_count = 1 To 100
Call set_trace("3, standard_ziel_liste - start " & "target_name")
Call set_trace("3, standard_ziel_liste - exit " & "target_name")
Range("rg_trace_nr") = 1
Next
time_stop = Timer
Application.ScreenUpdating = True
answ = MsgBox("Zeit: " & time_stop - time_start, vbOKOnly)
End Sub
Da verschiedene Excelversionen im Spiel sind, frage ich mich, ob die da ihren Teil beitragen. VBA muss ja interpretiert werden und wenn da unterschiedliche Interpreter vorhanden sind, könnte das ein Grund sein. Leider bin ich da kein Experte.
Anzeige
AW: Unterschiedliche Rechenleistung
27.11.2018 11:16:54
Werni
Hallo
Von der Geschwindigkeit beim Ablauf eines Codes ist die
Excel Version nicht von grosser Bedeutung.
Hier mal ein Vergleich mit angefügtem CODE
Desktop PC: 9-jährig
Office 2010
Win7 Core(TM) i7-2600 3.4GHz
Arbeitsspeicher 4GB
CPU Belastung 12%
Code-Dauer 0:00:58
Laptop: 3-jährig
Office 2016
Win7 Core(TM) i7-4710 2.5GHz
Arbeitsspeicher 12GB
CPU Belastung 28%
Code-Dauer 0:01:38
Code: Öffne eine leere Mappe und füge diesen Code ein.
Option Explicit
Sub Geschwindigkeit()
Dim i As Long
Columns(2).NumberFormat = "hh:mm:ss"
[B2:B3] = ""
[B1] = Time
For i = 1 To 200000
[A1] = i
DoEvents
Next
[B2] = Time
[B3] = [B2] - [B1]
End Sub

Einen solchen Code hab ich vor Jahren einem Testcenter
für Prozessorgeschwindigkeit geschrieben.
Gruss Werni
Anzeige
Korrektur
27.11.2018 12:11:25
Werni
Hallo
Der Laptop hat Win10 und nicht Win7
Gruss Werni
AW: Unterschiedliche Rechenleistung
27.11.2018 22:01:45
yogi
@Werni
ich habe mal deinen Geschwindigkeitstestcode genommen und ihm einigen Funktionen zur Seite gestellt. So werden folgende Informationen ausgelesen und gespeichert:
Benutzername
Prozessor
Prozessorname
Takt (MHz)
Computername
Excel-Version
Operating system
Ich lasse dann bei allen Benutzrn das Program laufen und bekomme so
Rückschlüsse auf die verschiedenen Rechenleistungen. Dann kann ich an die Optimierung
des Hauptprogrammes gehen.
Gruss
yogi
AW: Unterschiedliche Rechenleistung
27.11.2018 17:30:53
onur
Vergleiche mal so:

Sub test_trace()
Dim time_start As Double
Dim time_stop As Double
Dim time_is As Double
Dim loop_count As Long
Dim answ As Long
Dim total_time As Double
Application.Calculation = xlManual
Application.ScreenUpdating = False
time_start = Timer
For loop_count = 1 To 100
Call set_trace("3, standard_ziel_liste - start " & "target_name")
Call set_trace("3, standard_ziel_liste - exit " & "target_name")
Range("rg_trace_nr") = 1
Next
time_stop = Timer
Application.ScreenUpdating = True
answ = MsgBox("Zeit: " & time_stop - time_start, vbOKOnly)
Application.Calculation = xlAutomatic
End Sub

Anzeige
AW: Unterschiedliche Rechenleistung
27.11.2018 17:54:32
Werni
Hallo Onur
Es geht hier nicht um einen Code schneller zu machen.
Es geht um die Rechenleistung verschiedener Rechner.
Und dann noch halbfertige Codes einstellen!
Gruss Werni
AW: Unterschiedliche Rechenleistung
27.11.2018 18:01:06
onur
"Es geht hier nicht um einen Code schneller zu machen."- habe ich das behauptet?
Ich versuche immer noch festzustellen, woher die Unterschiede kommen.
Wenn jetzt der Unterschied nicht mehr so gravierend ist.....
AW: Unterschiedliche Rechenleistung
27.11.2018 18:05:30
onur
Und der Code ist nicht meins, ich habe ihn nur um 2 Zeilen ergänzt!
Abgesehen davon - WAS MISCHST DU DICH EIGENTLICH EIN?
Kümmere dich gefälligst um deinen eigenen Mist!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige