| |
|
|
- Seite 1 - |
|
![E.T.: 28.03.2013](.././../../i/a/1302115833493860557608e.png) E.T. | Das 32-Bit-Programme auf einem 64-Bit-System (geringfügig) langsamer laufen (können), ist ja wohl bekannt. Ich bin aber jetzt auf ein gravierendes Problem gestoßen:
Ich lese simple Textdaten aus einer Datei ein, lege diese (mit zusätzlichen Info's) in einem per Create"Grid"... erzeugtem Stringgrid ab. Auf einem neuen X64-System (WIN 7) ist jetzt aufgefallen, das diese Operation enorm länger dauert als auf einem X86-System (XP). Stelle ich das gleiche auf Create"List"... um und schreibe genau die gleichen Daten da hinein, ist kaum ein Unterschied erkennbar. (nebenbei beim testen festgestellt, das das "Grid" unter XP sogar schneller beschrieben wir als als das "List").
Messung unter XP:
![](https://xprofan.com/files/ackca.jpg)
Messung unter Win7 - 64 Bit:
![](https://xprofan.com/files/nmica.jpg)
Hab also den betreffenden Code aus meinem Programm extrahiert und ein Test-Programm erstellt (im Anhang). Die Daten werden aus einer reinen Text-Datei (eigentlich einer ini-Datei) gelesen (auch im Anhang).
Irgendetwas scheind da unter 64 Bit mit dem "Grid" schief zu laufen. Wer Lust (und Zeit) hat, kann ja meinem Testprogramm mal beim Einlesen zuschauen, hab extra mal 'nen Zähler eingebaut, wo das Progg gerade hält. Dabei kann man feststellen, das beim einlesen in das "Grid" das ganze Programm immer langsamer wird und der Speicherverbrauch (lt. T-Manager) irgendwann enorm ansteigt (unter 7-64).
Liegt das nun am X64-System oder ist da irgendwo in X2 der Wurm drinn ??
Bitte mal um Test's und Rückmeldungen. |
![](/intl/i/dw.gif) |
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.03.2013 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
![Georg Teles: 29.03.2013](.././../../i/a/910.gif) Georg Teles | ![](https://xprofan.com/files/kikca.jpg)
du hattest recht E.T. hier nochmal Test der 32 Bit Version, ist etwas schneller:
vor einer Woche hatte ich noch 2 Systeme, habe Win 7 gelöscht weil das System so ziemlich mit vielen Programmen nicht funktioniert und sowieso "Speicheressend" ist, ich mag Win 7 nicht ![](.././../../i/s/__upl_ext_1111498551.gif) |
|
|
| |
|
|
|
![Julian Schmidt: 29.03.2013](.././../../i/a/1598.gif) Julian Schmidt | E.T. (28.03.13)
Dabei kann man feststellen, das beim einlesen in das "Grid" das ganze Programm immer langsamer wird und der Speicherverbrauch (lt. T-Manager) irgendwann enorm ansteigt (unter 7-64).
Kann ich nicht bestätigen. Der Speicherverbrauch bleibt gleich. Langsamer wirds trotzdem. Bin jetzt bei 70000 von 10000 und läuft 40min.
![](https://xprofan.com/files/makca.png) |
|
|
| |
|
|
|
![iF: 29.03.2013](.././../../i/a/1.gif) | Dies bei mir unter WinXP32-Bit:
![](https://xprofan.com/files/oakca.png) |
|
|
| |
|
|
|
![E.T.: 29.03.2013](.././../../i/a/1302115833493860557608e.png) E.T. | Danke, David.
Jo, die Bestätigung: unter 32 Bit läufts ohne Probleme.
Da muss wohl Roland mal schauen, was ab Win 7 unter 64 Bit schief läuft |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 29.03.2013 ▲ |
|
|
|
|
![GDL: 30.03.2013](.././../../i/a/163757696547b07eee29838.gif) GDL | Hallöle,
bei mir unter win7 professional.
![](https://xprofan.com/files/veica.png)
Grüßle Georg |
|
|
| |
|
|
|
![E.T.: 17.04.2013](.././../../i/a/1302115833493860557608e.png) E.T. | Hm, hatte doch mal mit 'ner Antwort von Roland gerechnen ![](.././../../i/s/__upl_ext_1111498502.gif) |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 17.04.2013 ▲ |
|
|
|
|
![RGH: 17.04.2013](.././../../i/a/20.gif) RGH | Ich wüsste nicht, was ich da machen kann, wenn der Unterschied nicht von der (X)Profan-Version abhängt, sondern vom Betriebssystem. Möglicherweise hat Microsoft da beim 32-Bit-Emulator gepatzt.
Wie sieht es denn mit FreeProfan64 aus?
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 17.04.2013 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
![RGH: 17.04.2013](.././../../i/a/20.gif) RGH | Ich habe es mal unter FreeProfan64 auf Win7-64 laufen lassen: Das gleiche Problem GRID ist deutlich langsamer als LIST. Der Code für das GRID (Windowsklasse "SysListView32") ist zwar deutlich aufwändiger als für LIST (Windowsklasse "LISTBOX" - nur eine Message), aber unter 32-Bit wirkt sich das ja auch nicht aus. Mit LIST lief das Programm eine gute Minute, mit GRID sind gleich 40 Minuten nach 75000 Sätzen erreicht. Es muss also an der Implementierung der Klasse unter 64-Bit liegen. Da habe ich natürlich keinen Einluß drauf. Es liegt also nicht an der Umleitung von 32 nach 64 Bit (Aufruf eines 32-Bit-Programmes unter Win64), sondern direkt an der Klasse uter 64 Bit.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 17.04.2013 ▲ |
|
|
|
|
![iF: 17.04.2013](.././../../i/a/1.gif) | Man könnte vlt. auch mal schauen ob ein Aushebeln der Fensterklasse bezogen auf hierfür nicht relevante Nachrichten einen deutlichen Geschwindigkeitszuwachs bringt, z.B. wenn nur das Zeichnen deutlich langsamer ist. |
|
|
| |
|
|
|
![RGH: 17.04.2013](.././../../i/a/20.gif) RGH | Also bei einem GRID oder der LIST wird gar nicht gezeichnet, da das Fenster gleich unsichtbar erzeugt wird. Also da sehe ich kaum Optimierungsmöglichkeiten. Möglicherweise könnte man für das GRID eine andere Fensterklasse verwenden, aber mit fällt im Moment keine allgemein vorhandene Klasse ein, die Tabellendarstelung germöglicht.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 17.04.2013 ▲ |
|
|
|
|
![E.T.: 18.04.2013](.././../../i/a/1302115833493860557608e.png) E.T. | Na dann werd ich wohl oder Übel alles auf syncron laufende "List"s umstricken ![](.././../../i/s/__upl_ext_1111498502.gif) |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 18.04.2013 ▲ |
|
|
|
|
![Andreas Miethe: 20.04.2013](.././../../i/a/3800230414783ad80d4e0b.gif) Andreas Miethe
![DOKTOR XPROFAN EHRENHALBER](.././../../i/dr.gif) | Ich weis ja nicht was Du vorhast, aber das Einlesen in eine Liste kannst Du beschleunigen ( bei mir ca. 5mal schneller ), wenn Du es mit einer Berechsvariable machst.
Willst du nur in der Datei suchen geht es noch schneller.
![](https://xprofan.com/files/vanva.png)
Beispiel : KompilierenMarkierenSeparierenDeclare List_Entry$, Liste1&, Liste$, Z%, S_Time!,F_Time!
Proc Schnell
print "Daten in ListboxListe ''normal'' einlesen"
Liste1& = Create("List",0)'Schnelle Version
Assign #1, Liste$
Reset #1
WhileNot List_Entry$ = "[Daten]"
Input #1, List_Entry$
EndWhile
List_Entry$ = ""
S_Time! = !now
print "Start:",dt("DateTimeStr","hh:nn:zz" ,!now)," (",str$(S_Time!),")"
WhileNot EOF(#1)
Input #1, List_Entry$
IfNot Trim$(List_Entry$) = ""
inc Z%
AddString(Liste1&,List_Entry$ + "|" + "bereits vohanden...Datei : ")
locate 3,0
'print str$(Z%)
EndIF
EndWhile
Close #1
F_Time! = !now
print GetString$(liste1&,0)
print "FERTIG:",dt("DateTimeStr","hh:nn:zz" ,!now)," (",str$(F_Time!),")"
Print "DAUER:",dt("getTime",1,(F_Time! - S_Time!))+" Sekunden"
EndProc
Proc ListeAusSpeicher
Liste1& = Create("Grid",2,0)'Langsame Version
Clear Z%
Declare Bereich#,In$,X&
DECLARE Text$[]
Var Hiergehtslos& = 0
Dim Bereich#, FileSize(Liste$)
BlockRead(Liste$, Bereich#, 0, FileSize(Liste$))
Hiergehtslos& = MemPos(Bereich#,0,"[Daten]")+9'(Länge von String[Daten]+chr$(10)+chr$(13)
print "*************************************************"
Print "Daten aus Bereichsvariable in dynamisches Array"
S_Time! = !now
print "Start:",dt("DateTimeStr","hh:nn:zz" ,!now)," (",str$(S_Time!),")"
repeat
Inc Z%
In$ = Char$(Bereich#,Hiergehtslos&+X&,32)
Text$[Z%] = In$+ "|" + "bereits vohanden...Datei : "
Add X&,34
Until X& = SizeOf(Bereich#)- Hiergehtslos&
Dispose Bereich#
F_Time! = !now
Print Text$[1]
print "FERTIG:",dt("DateTimeStr","hh:nn:zzz" ,!now)," (",str$(F_Time!),")"
Print "DAUER:",dt("getTime",1,(F_Time! - S_Time!))+" Sekunden"
print "*************************************************"
Print
print "*************************************************"
Dim Bereich#, FileSize(Liste$)
BlockRead(Liste$, Bereich#, 0, FileSize(Liste$))
Print "Direkt in Datei suchen"
S_Time! = !now
print "Start:",dt("DateTimeStr","hh:nn:zzz" ,!now)," (",str$(S_Time!),")"
if MemPos(Bereich#,0,"9a421a62a95955702f589e6f4afac771")
Print Char$(Bereich#,MemPos(Bereich#,0,"9a421a62a95955702f589e6f4afac771"),32)+"|"+"bereits vohanden...Datei : "
Endif
F_Time! = !now
print "FERTIG:",dt("DateTimeStr","hh:nn:zzz" ,!now)," (",str$(F_Time!),")"
Print "DAUER:",dt("getTime",1,(F_Time! - S_Time!))+" Sekunden"
Dispose Bereich#
Endproc
CLS
Liste$ = "pics aktuell.dfl"
IfNot Liste$ = ""
Print "*************************************************"
Schnell
Print "*************************************************"
Print
ListeAusSpeicher
Print "*************************************************"
Else
Print "Keine Liste geladen"
EndIf
Waitinput
End
|
![](/intl/i/dw.gif) |
|
| XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] ![](/intl/i/lnk.gif) | 20.04.2013 ▲ |
|
|
|