Hallo, meine derzeitige C# Anwendung möchte ich erweitern um große Datenmengen (>200 Dateien mit ca. 10 MByte Dateninhalt) schnell zu bearbeiten. Die Dateien werden nacheinander eingelesen und daraus wird dann ein Bild erzeugt. Gleichzeitig sollte die Anwendung nicht hängen bleiben so dass man das GUI Fenster sehen kann. Würde es eventuell Sinn machen diese Auswertung auch mit Python zu machen?
csharp_user schrieb: > Würde es eventuell Sinn machen diese Auswertung > auch mit Python zu machen? wenn du in Python besser bist warum nicht. Aber C# ist dafür bestimmt nicht langsamer, du musst einfach mit Threads/Background Worker arbeiten. Und 200 x 10Mb ist nun wirklich keine große Datenmenge.
Peter II schrieb: > Und 200 x 10Mb ist nun wirklich keine große Datenmenge. Na ja wenn das zu erzeugende Bild die kompleten Daten benötigt und im Speicher gehalten wird sind es schon mal 2GByte und damit würde es nicht mehr auf einem 32 Bit Windows funktionieren.
Der Andere schrieb: > Na ja wenn das zu erzeugende Bild die kompleten Daten benötigt und im > Speicher gehalten wird sind es schon mal 2GByte und damit würde es nicht > mehr auf einem 32 Bit Windows funktionieren. Aber zu 99% kann man vorher schon Daten zusammenfassen, sonst würde das Bild auch mindestens 2GB groß werden.
Für jede Datei soll ein Bild erzeugt werden. Es sollen nicht alle Informationen auf ein Bild abgelegt werden.
csharp_user schrieb: > Für jede Datei soll ein Bild erzeugt werden. Es sollen nicht alle > Informationen auf ein Bild abgelegt werden. wo ist nun genau das Problem? Wenn du nicht willst, das die GUI blockiert, dann arbeite mit Backgroundworker. Wenn glaubst das C# zu langsam ist, und du kein Möglichkeit zur Optimierung siehst, dann kannst du dein glück mit Pyton oder jeder andere Sprache versuchen.
csharp_user schrieb: > Für jede Datei soll ein Bild erzeugt werden. Es sollen nicht alle > Informationen auf ein Bild abgelegt werden. Dann hat sich mein Kommentar erledigt. Peter II hat dir schon den richtigen Hinweis gegeben: Peter II schrieb: > Wenn du nicht willst, das die GUI blockiert, dann arbeite mit > Backgroundworker.
Der Trick sind zum einen die mehrfach erwähnten Backgroundworker damit die gui nicht blockiert. Ob nun ein worker alle Bilder verarbeitet oder es für jedes Bild einen eigenen gibt hängt von der konkreten Aufgabe ab. Denkbar wäre auch eine Art preprocessing mit einem worker pro Bild zu machen und dann am Ende in einem weiteren zu mergen. Ob Python schneller ist wage ich zu bezweifeln. Falls Libraries die rechnerei machen dürfte der Unterschied bei gleichen Bibliotheken gegen Null gehen.Das reine Laden bzw Schreiben der Daten wird ähnlich fix gehen. Falls du selbst rechnest, müsste C# schneller sein. Dann wäre eher ein Wechsel in Richtung C oder C++ ratsam (notfalls in eine Bibliothek ausgelagert und die gui wie gehabt). In Zeiten von C compilern nach dem Jahr 2000 bringt Assembler hier kaum bzw nur mit extremem Aufwand noch ein Quäntchen mehr Performance. In der Regel optimiert man zuerst am Algorithmus bevor man verzweifelt eine "schnellere" Programmiersprache sucht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.