Suchergebnisse
Suchergebnisse 1-21 von insgesamt 21.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
Bei langsamen Threads sind meist nicht die Threads schuld, sondern wie die Thread-Ergebnisse zurück ins Gui transferiert werden (Control.Invoking). Also ich denke, du suchst an der falschen Stelle.
-
Das ist Unfug. Ich denke, herausgearbeitet ist inzwischen, dasses nicht der Gui-Zugriff ist, der laggt, sondern dass iwelche Daten auf Platte geschrieben werden. In deim gezeigten Code finden aber überhaupt keine Schreibzugriffe statt - wie gesagt: du suchst an der falschen Stelle. Bei Schreibzugriffen hilft kein Paralell.For mit Threads soviel wie Kernels da sind, sondern du brauchst genau einen Nebenthread, der die Schreibarbeit auf Platte übernimmt - denn es gibt nur eine Platte. Denkbar wäre…
-
hat denn obige Parallelisiererei mit Parallel.For Geschwindigkeit gebracht? Wenn nicht, dann isses Unfug. Wenn doch, mussich meine Behauptung zurücknehmen, das sei Unfug.
-
Ja, aber das ist das olle Optimierungs-Phänomen: Du kannst die Berechnungs-Geschwindigkeit mw. vertausendfachen, es bringt nix, wenn die Performance am Schreiben der Daten hängt. Also angenommen, die Berechnung benötigt normal 0.5s, und das Datenschreiben 50s. Da bringt die tausendfache Berechnungs-Geschwindigkeit eine letztendliche Verbesserung von 50.5s -> 50.0005s Also knapp 1%, nicht wahrnehmbar - Unfug. Google mal "rules of optimization"
-
Na, wenn die Rechnungen langsamer sind als das Wegschreiben, dann mussich den Unfug wohl zurücknehmen. Zur Frage: Der Gui-Thread hat glaub sehr hohe Priorität, je nachdem, wie das Threading aussieht kann der Nebenthread ziemlich nachrangig behandelt werden. Warum Lambdas signifikant schneller sind als benannte Methoden - k.A. Ich tippe drauf, dass iwie anners und besser gecodet. Müsste ich jetzt den direkten Vergleich sehen zw. der Lambda-Verwendung und der mitte benannten Methode.
-
ich find die Aufgabe ja sehr reizvoll. Imo könntest du ein klein Testprojekt basteln, 1MB Daten dazu, zippen und anhängen, vlt sogar auf [Sammelthread] Knobel-Aufgaben, knifflige Algorithmen, elegante Lösungen Mit der Aufgabe, aus der Daten-Datei möglichst schnell eine Ergebnis-Datei zu produzieren. Das wäre im Grunde sogar einen kleinen Tipp wert, denn was mit Parallel.For haben wir noch nicht. Vlt. stellt sich auch heraus, dasses bereits optimal ist, also dass kann ich mir doch vorstellen, das…
-
ich versteh immer weniger: Gab es nun ein Performance-Problem, und wo war das? Beim Holen von Daten über diese Com-Schnittstelle? Beim Rechnen von Matrizen?
-
die Stopzeiten sind ungeschickt verteilt. Führe mal dieses aus:VB.NET-Quellcode (56 Zeilen)Das vergleicht besser die ZeroCalcs mitte FftCalcs
-
kann man bestimmt was parallelisieren, aber vorrangig wäre glaub mal CalculateFFT() anzugugge, ob da nicht iwelche Performance-Böcke geschossen sind. Auch fragwürdig, ob für jeden ChannelName dasselbe SourceFile immer wieder neu geöffnet und geclosed wern muss. Aber habich richtig verstanden, dass 6 ChannelNames existieren?
-
Ignorieren ist in meim Fall nicht ganz richtig. Ich kann halt garnix zu sagen, deshalb sag ich nix dazu. Aber ich würd bestimmt drauf zurückkommen, wenn sich Probleme auftun. Man kann nicht alles gleichzeitig machen, und Nebenläufigkeit gehört zu dem letzten, was anzufassen ist, und ich wäre noch dabei, zu gucken, ob durch einfach saubereres coden was verbessert werden kann.
-
hat sicher keine Auswirkung auf die Performance, wohl aber auf die Resourcen:VB.NET-Quellcode (10 Zeilen)recherchiere mal, was das Schlüsselwort New in vb.net bedeutet, und warum es hier nix verloren hat. Vergleichbare New-Fehler finden sich auch im anneren Code. Auch ist die Resourcenbereinigung von Com-Objekten eine wissenschaftliche Wissenschaft. Bei dir entstehen (selbst bei Vermeidung üflüssiger News) tausende unaufgeräumter DChannel-Instanzen - evtl. wird das auch noch Ärger machen.
-
Zitat: „wann ein New da hin muss“New heisst New, weil damit ein neues (engl: new) Objekt erstellt wird.VB.NET-Quellcode (1 Zeile)nun ist ein neues DChannel in der Variable bla angelegt. Was ühaupt keinen Sinn hat, denn als nächstes wird eine Function aufgerufen, die ein DChannel-Objekt zurückgibt:.VB.NET-Quellcode (1 Zeile)Wo ist nu das DChannel-Objekt, was vorher in bla war? Richtig - es ist weg. Macht auch nix - hat eh niemand gebraucht. Warum aber dann erstmal erstellen mit New?
-
Wie gesagt: Com-Objekte zu bereinigen ist eine Wissenschaft - zumindest mit Office-Interop-Com-Objekten ist das so. Quit() - wenn vorhanden - reicht nicht, sondern man muss mit Marshal.FinalReleaseComObjekt() da rumfuhrwerken. Aber vlt. ists bei dem famosen Famos-Teil nicht so - bei Office ist ja das Problem, dass beim InterOp-Zugriff die Office-Anwendung unsichtbar gestartet wird, und wenn nicht jedes Popel-Cömmchen ordentlich beerdigt wird, dann bleibt die Office-Anwendung unsichtbar im Speich…
-
Zitat von Tukuan: „Also heißt es so wenig Objekte aus der Schnittstelle zu verwenden wie möglich verwenden.“jo, zumindest das. Kannst ja auch mal im Taskmanager gugge, ob da iwelche Prozesse hochfahren, wenn mitte Lib gearbeitet wird. Langfristig musste auch auf Memory-Leaks testen, also nicht, dass deine Anwendung über die Zeit den Arbeitsspeicher mit unreleasten Com-Objekten füllt, und nach 4h stürzt vlt. sogar eine ganz annere Anwendung ab deswegen. Themawechsel: Wer sagt eiglich, man könne i…
-
Also Thema Geld wurde ja angerissen - das mit "den Kunden dickere Rechner kaufen lassen" finde ich iwie arrogant, sondern ein intelligenter Chef sieht doch zu, dass seine Entwickler ständig das optimale Werkzeug haben. Das Geld etwa für eine Edition mit Profiler oder auch für einen externen Profiler hat man doch schon wieder drin, wenn man dadurch das Produkt auch nur 2 Tage früher ausliefern kann, oder? Ganz zu schweigen von den Kosten, die nachträgliche Patches verursachen - da brauchste doch …
-
googelt doch nochmal die "rules of optimization". Ich denke nämlich, jetzt kommt der Einstieg in sehr schwierige, schwer wartbare und anfällige Optimierungen, und solch soll man ja bekanntlich auf die lange Bank schieben, und ohne Profiler schoma garnet anfassen. Also googelt doch nochmal die "rules of optimization".
-
entferne mal endlich den blöden Microsoft.Visualbasic - Namespace, und benutze die allgemeinen Framework-Klassen, statt des vb6-Abwärtskompatibel-Schrotts: Böse Funktionen vermeiden und guck ma, ob son DChanel-Dingens nicht eine Clear-Methode hat, dann kannste dasselbe vlt. mehrmals verwenden. Welchen Datentyp hat ChannelRead? Warum konvertierst du das nach Array?
-
Zitat von Tukuan: „Nö. Leider kein Clear, Exit, close, dispose, deallocade, free oder was es sonst so geben könnte.“Remove? such mal das DChannel.AppendDataDouble() im ObjectBrowser auf, und poste Screenshot, was da sonst noch an Methoden verfügbar ist. Was ist mit meine anneren beiden Anregungen?1. böse Funktionen vermeiden 2. klären, was das ChannelRead bei dir fürn Datentyp ist, und erklären, warum du das nach Array konvertierst. (das bringt der Performance nix, aber bereinigt den Code und sc…
-
1. https://www.vb-paradise.de/index.php/Thread/103476-Video-Anleitung-zur-Forum-Bedienung/?postID=887846#post887846 2. gut 3. ach, das ist byRef, und erwartet wird Typ Array? Ist ja ein krankes Design. Und mussich gleich ausprobieren, ob die Werte bei der CType-Geschichte ühaupt korrekt zurückgeschrieben werden. edit: habs ausprobiert, und fund, das failt. Also entweder hat deine Funktion dadurch ein Fehlverhalten, oder die Famos-Progger haben da ByRef verwendet, wo es überhaupt nicht hingehört.…
-
man kann auch mit dem kranken ByRef-Design erreichen, dass die Variablen ausgetauscht werden. Dazu müsstest du aber überhaupt erstmal überprüfen, ob die Methode dieses Array verändert. Falls ja, hat dein Proggi vmtl. kein Fehlverhalten, falls nein, muss man dem Krank-Design entsprechend den Code ändern, und dann nochmal gucken, ob er was verändert. Weil kann auch sein, dass garnix verändert werden soll. Naja - genau betrachtet siehts mir eh aus wie VollQuatsch: In der Schleife weist du die Milli…
-
ja, aber warum übergibst du diese Werte dem DChannel - was soll der denn damit ausrechnen?