| |
|
|
- page 1 - |
|
 KHR | allô miteinander,
.
je voudrais une grand la quantité Meßdaten aufbereiten et ensuite comme Kurve(n) représenter. qui données volonté aus einer Dossier lire et dans Arrays zwischengelagert
Um stark flackernde Meßwerte dans einer übersichtlichen Kurve représenter trop peut voudrais je cet sur Durchschnittsbildung beruhigen cela ganze soll ensuite im fertigen Programme pour cinq zahlenreihen aller
Bisher fais je cela dans quelque chose so:
il y a 5 arrays avec 100 elementen Float-Variablen , chez beginn avec 0 pleine
un phrase Meßwerte wird lire, chaque Array erhält un Element eingetragen
Pour chaque Array wird qui Durchschnitt ermittelt,
qui jeweiligen Punkte volonté geplottet
et plus ca va avec dem prochain Datensatz Meßwerte.
là je bisher den Durchschnitt avec tandis que-Wend Schleifen errechne, wird alles unendlich lente. Selbst avec Profan2cpp dauert es Minuten jusqu'à qui Schirm vollgekritzelt ist.
ici la fois un entier court Auszug qui données comment vous vorliegen. réel avons qui Fichiers souvent sur dix- ou bien gar zwanzigtausend Datensätze (Zeilen)
25.07.2007;08:22:53;1874;63.3;0.019387;0.023140;0.024151;0.022312;-----;----- 25.07.2007;08:22:54;1871;63.3;0.028538;0.022725;0.025337;0.022793;-----;----- 25.07.2007;08:22:55;1914;63.3;0.024311;0.023610;0.022366;0.022739;-----;----- 25.07.2007;08:22:56;1889;63.3;0.021887;0.023453;0.019952;0.022303;-----;----- 25.07.2007;08:22:57;1895;63.3;0.027712;0.023644;0.021144;0.022193;-----;----- 25.07.2007;08:22:58;1902;63.3;0.023383;0.023765;0.022752;0.022195;-----;----- 25.07.2007;08:22:59;1891;63.3;0.026178;0.023538;0.022319;0.022224;-----;----- 25.07.2007;08:23:00;1912;63.3;0.024255;0.023965;0.021904;0.022195;-----;----- 25.07.2007;08:23:01;1898;63.3;0.021041;0.023673;0.024442;0.022237;-----;----- 25.07.2007;08:23:02;1895;63.3;0.024243;0.023550;0.022202;0.022322;-----;----- 25.07.2007;08:23:03;1919;63.3;0.029875;0.023874;0.022494;0.022521;-----;----- 25.07.2007;08:23:04;1930;63.3;0.027768;0.024126;0.022018;0.022461;-----;----- 25.07.2007;08:23:05;1914;63.3;0.020411;0.023905;0.020469;0.022334;-----;----- 25.07.2007;08:23:06;1915;63.3;0.027465;0.023837;0.023016;0.022474;-----;----- 25.07.2007;08:23:07;1924;63.3;0.020727;0.023959;0.023631;0.022536;-----;----- 25.07.2007;08:23:08;1891;63.3;0.020876;0.023436;0.021933;0.022374;-----;----- 25.07.2007;08:23:09;1867;63.3;0.020627;0.023159;0.020591;0.022087;-----;----- .... qui ersten beiden Spalten date et Zeit sommes uninteressant, seulement après gehts richtig à l'attaque.
avant lauter Frust sur mon Ideenlosigkeit hab je qui bisherigen Codes gelöscht  Hat là quelqu'un ne concept, comment so quoi plus rapide aller pourrait??
suis arrêt malheureusement doch ne...aucune Programmierer mais seulement un Profan-Wurschtler. |
|
|
| Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 03.06.2008 ▲ |
|
|
|
| |
|
- page 2 - |
|
|
 KHR | allô Miteinander,
.
Freut mich, qui je soviel Staub aufgewirbelt habe. là besteht oui ne echte chance, qui je ne Solution mon Geschwindigkeitsproblem trouver bevor Intel une P9 avec 34000facher Rechenleistung sur den marché brint.
dans qui TXT-Dossier sommes so à qui 8000 Datensätze.
Im JPG ist dargestellt, quoi maintenant avec meinem Programme chez qui représentation rauskommt.
cet partiellement wirre Gekritzel voudrais je beruhigen, si bien que je ne Kurve bekommen peux.
chacun ligne number ist ne Datenreihe. je habs la fois avec viel patience probiert. si Je l' Mittelwert aus 30 Datensätzen nehme, wird es déjà viel besser, mais il y a Fälle, là sollte on déjà 100 prendre, avec cela on cela ganze vernünftig figurer peux.
alors encore la fois:
Jeden qui Punkte sur den abgebildeten Linien voudrais je par une Mittelwertbildung beruhigen. chacun ligne number hat ca 6000 (virtuelle)Punkte, 5 Kurven sommes dargestellt - alors devrait je pour chacun page 30000 la fois par qui Mittelwertbildung aller et en supplément ensuite encore toujours qui données richtig bereitstellen
cela beste, quoi je avec cette données dans cette Auflösung geschafft habe, étions sogar avec P2CPP 3 Minuten.
Pour un Bild wäre le reste akzeptabel, si on mais ensuite encore weiterblättern veux, wirds très très fastidieux
Incidemment: pas qui son denkt, je voudrais Euch ici kostenlos pour meinen Arbeitgeber einspannen. Neee Neee
cela Programme est un Tool, le moi pour mich et mon travail zusammenbastele. je geb es aussi ensuite et quand la fois nem Kunden plus - mais alles kostenlos et just for fun. là steckt ne...aucune Komerz derrière elle seulement mon paresse bestimmte Auswertungen einfacher avons trop voulons
.
. |
 |
|
| Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 04.06.2008 ▲ |
|
|
|
|
 Frank Abbing |
chacun ligne number ist ne Datenreihe. je habs la fois avec viel patience probiert. si Je l' Mittelwert aus 30 Datensätzen nehme, wird es déjà viel besser, mais il y a Fälle, là sollte on déjà 100 prendre, avec cela on cela ganze vernünftig figurer peux.
je fais justement Ähnliches. Allerdings avec moins Werten et je verfahre so, trois Werte trop einem Mittelwert zusammen trop le calcul, quoi pour mon Zwecke ausreichend ist.
une deiner Fichiers lasst sich par qui Listview.dll binnen moins hundert Millisekunden einlesen. Einmal lire peux vous pour chacun Spalte getrennt la valeur aller Zeilen zusammen le calcul, sodass du léger den Mittelwert bilden könntest. mais du möchstest oui seulement toujours une bestimmte Anzahl zusammenrechnen... là devrait une neue Funktion her qui cela erledigt. Andererseits wäre es sûrement besser qui ganze change sans den le détour sur qui Dll trop faire, là du qui Werte oui seulement visuell représenter vouloir. cela sollte dans Assembler am schnellsten possible son, wobei cela Hauptproblem qui Benutzung de Fliesskommazahlen ist. ici allez viel Rechenzeit verloren. je pourrait dir anbieten mich à einer Assemblerfunktion trop versuchen, qui du mittels XPIA ou bien comme Dll dans dein Programme einbinden könntest. qui serait dans etwa so air:
Mediate(datenfile#, newdatas#, spalte&, anzahlmittlungsdaten&)
Rückgabewert wäre le nombre gebildeter Mittelwerte, qui dans newdatas# comme Longwerte hintereinander geschrieben worden sommes.
Aus deinen 3 Minuten Berechnungszeit würden ensuite schätzungsweise wenige (3-4) Sekunden volonté. |
|
|
| |
|
|
|
 | avec reinem XProfan viens je sur 6.2 Sekunden (10652 Datensätze avec jeweils 10 Spalten et chez sogar dynamischen Tabellenbreite et relativ einfacher mais effektiver Glättung. (siehe Bild)
Avez- Du quelque chose comme? |
|
|
| |
|
|
|
 Thomas Freier | @Frank, ensuite spende uns doch s'il te plaît qui Mittelwert-Funktion einer Spalte (max., min. et somme avons wir oui déjà). et si possible une Funktion, qui le nombre qui avec Werten gefüllten Items einer Spalte ermittelt. |
|
|
| |
|
|
|
 | ici qui Source zum Bild...
Beinhaltet une Funktion createHPicByStats(data$,xx,yy) et liefert un Bildhandle qui Statistik zurück. qui Ausgabegrösse peux per Pixel xx et yy eingestellt volonté. avec qui Funktion peux on aussi zur Laufzeit per String solch un Diagramm erzeugen. Im Titel steht le nombre qui nécessaire Millisekunden.
Orginalcode: [...] 
sans xpse KompilierenMarqueSéparationWINDOW 100,100 - 700,500
CLS $888888
var TME&=&GETTICKCOUNT
var HPIC&=CREATEHPICBYSTATS(FILE_GET_CONTENTS(fme-300-test.txt),600,420)
SETTEXT %HWND,STR$(&GETTICKCOUNT-TME&)+ ms
DRAWPIC HPIC&,10,10;0
USERMESSAGES $0014
WHILE 1
WAITINPUT
ENDWHILE
end
proc CREATEHPICBYSTATS
PARAMETERS S$,XX&,YY&
DECLARE LN$[],HDR$[],ENTI$[]
LN$[]=EXPLODE(S$+
,
)
var C&=SIZEOF(LN$[])
HDR$[]=EXPLODE(LN$[0],;)
var HDRC&=SIZEOF(HDR$[])
var F!=0
var F2!=0
DECLARE VMIN![HDRC&],VMAX![HDRC&],V![HDRC&,C&],VMM![HDRC&],COL&[IF(HDRC&>7,HDRC&,8)],COLB&[HDRC&],OLDF![HDRC&]
MAT VMIN![]=999999999999999
MAT VMAX![]=-999999999999999
DEC HDRC&
DEC C&
COL&[0]=$FF0000
COL&[1]=$00FF00
COL&[2]=$0000FF
COL&[3]=$880000
COL&[4]=$008800
COL&[5]=$000088
COL&[6]=$FF8800
COL&[7]=$00FF88
var CL&=0
WHILE 1
INC CL&
IFNOT CL&<C&
BREAK
ENDIF
ENTI$[]=EXPLODE(LN$[CL&],;)
SETSIZE ENTI$[],HDRC&+1
WHILELOOP 0,HDRC&
F!=VAL(ENTI$[&LOOP])
V![&LOOP,CL&]=F!
IF VMIN![&LOOP]>F!
VMIN![&LOOP]=F!
ENDIF
IF VMAX![&LOOP]<F!
VMAX![&LOOP]=F!
ENDIF
ENDWHILE
ENDWHILE
var I&=0
var A!=0
WHILELOOP 0,HDRC&
VMM![&LOOP]=(VMAX![&LOOP]-VMIN![&LOOP])
A!=V![&LOOP,1]
F!=VMM![&LOOP]
IF F!=0
CONTINUE
ENDIF
F2!=A!-VMIN![&LOOP]
IF F2!=0
CONTINUE
ENDIF
OLDF![&LOOP]=(F2!/F!*YY&)
ENDWHILE
var Y!=0
var HOP!=C&/XX&
var XH!=1
var YYHOP!=YY&*0.1
var X&=0
var HPIC&=CREATE(hNewPic,XX&,YY&,$FFFFFF)
STARTPAINT HPIC&
WHILE 1
INC X&
WHILELOOP 0,HDRC&
F!=VMM![&LOOP]
IFNOT F!=0
F2!=V![&LOOP,XH!]-VMIN![&LOOP]
IFNOT F2!=0
F!=(OLDF![&LOOP]*0.9)+(F2!/F!*YYHOP!)
ELSE
F!=(OLDF![&LOOP]*0.9)
ENDIF
USEPEN 0,0,COL&[&LOOP]
LINE (X&-1),(YY&-OLDF![&LOOP]) - (X&),(YY&-F!)
OLDF![&LOOP]=F!
ENDIF
ENDWHILE
XH!=XH!+HOP!
IF XH!>C&
BREAK
ENDIF
ENDWHILE
ENDPAINT
RETURN HPIC&
endproc
proc FILE_GET_CONTENTS
PARAMETERS FLE$
var B&=FILESIZE(FLE$)
IF B&<1
RETURN
ENDIF
DECLARE MEM#
DIM MEM#,B&
var R&=BLOCKREAD(FLE$,MEM#,0,B&)
var S$=CHAR$(MEM#,0,R&)
DISPOSE MEM#
RETURN S$
endproc
proc FILE_PUT_CONTENTS
PARAMETERS FLE$,S$
var L&=LEN(S$)
IF L&=0
var FH&=ASSIGN(FLE$)
REWRITE FH&
CLOSE FH&
ASSIGN FH&,
RETURN
ENDIF
DECLARE MEM#
DIM MEM#,L&+1
STRING MEM#,0=S$
BLOCKWRITE FLE$,MEM#,0,L&
DISPOSE MEM#
endproc
proc RGB.MIX
PARAMETERS COL1&,COL2&,TRANSL!
RETURN RGB(GETRVALUE(COL1&)*(1-TRANSL!)+GETRVALUE(COL2&)*(TRANSL!),GETGVALUE(COL1&)*(1-TRANSL!)+GETGVALUE(COL2&)*(TRANSL!),GETBVALUE(COL1&)*(1-TRANSL!)+GETBVALUE(COL2&)*(< TRANSL! ))
endproc
end
si je maintenant bedenke cela cet Methode aussi Spalte 1 et Spalte 2 mitberechnet (mais ici aucun payons findet) ensuite pourrait je mir présenter, dass avec kleiner Optimierung trop diesem Punkt peut-être sogar 4 jusqu'à 5 statt 6,8 Sekunden erreicht volonté peut.
@KHR: comment longtemps nécessaire qui Algo pour qui komplette Dossier? |
 |
|
| |
|
|
|
 | hé typisch - sur meinem Notebook avec 2,4GHz sogar seulement 6.2 Sekunden, statt aussi meinem DesktopPC avec 3,2 GhZ 6.8 Sekunden. Hat encore quelqu'un nen 486dx4/100 herumzugammeln?  |
|
|
| |
|
|
|
 Thomas Freier | un vite zusammengestrickter Test sur une doWhile- Boucle ist aussi pas justement lente (ici seulement pour 4 Reihen avec Mittelwert/sec et sur une *.dbf) . |
|
|
| |
|
|
|
 | Es sieht so aus comme si Du qui Skalen pas normalisierst - bekommst le reste fix incorporé?
et pour une Performancevergleich wäre es imho nötig alle 10 Spalten trop tenir compte de. (cela fait mon Beispiel aussi, quoique es chez date et Zeit naturellement seulement 0 evaluiert et utilise.)
alors Skalen normalisieren (x et y) et alle Spalten tenir compte de et ensuite: la durée preisgeben pour Codeperformancevergleich. |
|
|
| |
|
|
|
 Thomas Freier | @iF: aus Zeitgründen habe je es chez 6 Werten belassen. qui Hauptzeit wird beim Erstellen qui *.dbf verbraten. ici wäre un comparaison zum Listview ou bien GridBoxen encore intéressant. qui Skalierung, si je vous richtig hinbekommen habe, kostet ca. 300ms chez einer Endzeit de 3734 ms. sur meinem calculateur liegen beide Anwendungen sûrement sur gleicher Hauteur, si le weiteren 4 Werte en supplément venons. |
|
|
| |
|
|
|
 | Hm, irgendwas stimmt pas avec qui Normalisierung - qui muss automatisch bestimmt volonté pour chacun Spalte separat. Beispielsweise la hâte Vous schwarze ligne number dans qui Mitte, qui ist sozuagen pas sur cela ganze Y-Spektrum angezeigt. une change zur einer einstellbaren Ausgabegröße fehlt là aussi encore drin. ^ ^ |
|
|
| |
|
|
|
 Thomas Freier | @ iF: qui schwarze ligne number ist qui température (dans fme-300-test.txt ist max=64.8° - min=63.9°) . chez meiner Skalierung entspricht 1° = 13.9 Punkte. plus Ausschlag venez là pas raus. sa Temperaturanzeige allez de 44° jusqu'à 80°. là hilft seulement une filigranere Grafik comment chez dir. était mais pas mon but . |
|
|
| |
|
|
|
 | je sah grad le moi dessus den falschen Code posté hatte, cela était un Vorversion.
qui Orginalcode sous [...] était/ist cependant qui richtige.
j'ai den sans xpse-Code dessus korrigiert - maintenant stimmts avec Exe et Screenshot überein. 
KHR hätte es auffallen doit.  |
|
|
| |
|
|