Nun mal Schluss mit Kindergarten spider. Poste den vollständigen Quelltext und die exakten Fehlermeldungen.
dynamisches 2D-Array mit schnellem Zugriff / PriorityQueue
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Genau, die IDE mit ihren "unsinnigen Fehlern" ist Schuld
Nun mal Schluss mit Kindergarten spider. Poste den vollständigen Quelltext und die exakten Fehlermeldungen.
Nun mal Schluss mit Kindergarten spider. Poste den vollständigen Quelltext und die exakten Fehlermeldungen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Also mit Kindergarten hat das nix zu tun, ein Virus wirds wohl auch nicht sein. Und die IDE habe ich als Symptom und nicht als Ursache genannt. Denke das Ding bekam zu warm und erzeugte Speicherfehler - ist aber eigentlich auch unwahrscheinlich, weil ich ihn nicht ausgelastet hatte.
Wie dem auch sei...
Ich habe mein ultra-langsames Proof-of-concept fertig - es verkleinert ein Bild um 20 Pixel in der Breite und stellt dabei die seams dar. (Vorsicht: dauert auf meinem Notebook etwa 2 Minuten bis er durch ist und es beginnt gleich nach dem laden eines Bildes. Es ist kein Zoom implementiert, also bitte entsprechend kleine Bilder benutzen!) Die Breitensuche habe ich mir jetzt allerdings gespart, sonst wäre es noch langsamer und hätte mich vermutlich nochmal eine Stunde gekostet...
http://em.q-soft.ch/145seam.exe
Der Hauptübeltäter bei der Geschwindigkeit ist das umkopieren des Images - hat jemand Lust mir da etwas schnelleres zu coden?
Wie dem auch sei...
Ich habe mein ultra-langsames Proof-of-concept fertig - es verkleinert ein Bild um 20 Pixel in der Breite und stellt dabei die seams dar. (Vorsicht: dauert auf meinem Notebook etwa 2 Minuten bis er durch ist und es beginnt gleich nach dem laden eines Bildes. Es ist kein Zoom implementiert, also bitte entsprechend kleine Bilder benutzen!) Die Breitensuche habe ich mir jetzt allerdings gespart, sonst wäre es noch langsamer und hätte mich vermutlich nochmal eine Stunde gekostet...
http://em.q-soft.ch/145seam.exe
Der Hauptübeltäter bei der Geschwindigkeit ist das umkopieren des Images - hat jemand Lust mir da etwas schnelleres zu coden?
Code: Alles auswählen
Procedure makeNewImage()
Image2=CreateImage( #PB_Any,bildw-1,bildh)
FirstElement(Path())
;-Debug
If bildh<>ListSize(Path())
Debug "listsize: "
Debug ListSize(Path())
Debug bildh
EndIf
;------
flag=0
For y=0 To bildh-1
For x=0 To bildw-1
If Path()\x <> x
StartDrawing(ImageOutput(Image0))
Pixel=Point(x, y)
StopDrawing()
StartDrawing(ImageOutput(Image2))
Plot(x-flag, y,Pixel)
StopDrawing()
Else
flag=1
EndIf
Next x
NextElement(Path())
flag=0
Next y
FreeImage(Image0)
Image0=Image2
Global bildw=bildw-1
EndProcedure- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Ich meinte den vollständigen Code. Das obige Beispiel lässt sich nicht kompilieren. Und wo sind die Fehlermeldungen vom Debugger?
Windows 10 Pro, 64-Bit / Outtakes | Derek
irgendwie willst du es wohl nicht verstehen - die fehlermeldungen waren folge der probleme mit dem laptop. da stand z.B. "Fehler in Zeile 1" obwohl die ersten 5 Zeilen Kommentare waren. außerdem wurden die icon's in windows so angezeigt als könnten sie nicht gefunden werden - es war ein OS-weites Problem!!!
Der Code-Abschnitt sollte verdeutlichen welcher Codeabschnitt am meisten Zeit kostet. Den ganzen Code werde ich jetzt aus 2 Gründen nicht posten: 1. ist er in einer art, dass er ein schlechtes Licht auf mich werfen könnte, 2. habe ich da heute sehr viel Zeit hereininvestiert - und mein erster Gedanke dabei war nicht ein OpenSource-Projekt zu starten. Möglicherweise veröffentliche ich später den Source. Aber vlt siehst du ja den Link oben, da ist eine kompilierte exe - die sollte sogar unter Wine laufen.
Der Code-Abschnitt sollte verdeutlichen welcher Codeabschnitt am meisten Zeit kostet. Den ganzen Code werde ich jetzt aus 2 Gründen nicht posten: 1. ist er in einer art, dass er ein schlechtes Licht auf mich werfen könnte, 2. habe ich da heute sehr viel Zeit hereininvestiert - und mein erster Gedanke dabei war nicht ein OpenSource-Projekt zu starten. Möglicherweise veröffentliche ich später den Source. Aber vlt siehst du ja den Link oben, da ist eine kompilierte exe - die sollte sogar unter Wine laufen.
- HeX0R
- Beiträge: 3056
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Also:
Man sieht an deiner Prozedur tatsächlich, dass die erbärmlich langsam sein dürfte, und durchaus Potential für Performancezuwachs haben sollte.
Aber:
Überlege dir das folgende Szenario:
-Ein API-Crack liest sich das hier durch.
-Er sieht vermutlich sofort, dass die Prozedur so wie sie ist suboptimal ist.
-Er würde dir gerne helfen und einen Teil seiner Zeit für dich opfern.
-Er hat weder Zeit noch Lust, die Prozedur erst mal minutenlang zu hinterfragen, um endlich ein lauffähiges Beispiel fertig zu haben, mit dem er dann an der Performanceschraube drehen kann.
-Also wird er einfach entnervt zum nächsten ungelesenen Beitrag übergehen und du hast Pech gehabt.
Keiner will deinen kompletten Source sehen, um damit reich zu werden.
Alles was hier (zurecht) erwartet wird, ist ein Teil deiner Zeit, ein lauffähiges Beispiel an dem man herumschrauben kann anzubieten, damit man einen Teil seiner Zeit investieren kann, um dir zu helfen.
Das kann nicht zuviel verlangt sein.
Man sieht an deiner Prozedur tatsächlich, dass die erbärmlich langsam sein dürfte, und durchaus Potential für Performancezuwachs haben sollte.
Aber:
Überlege dir das folgende Szenario:
-Ein API-Crack liest sich das hier durch.
-Er sieht vermutlich sofort, dass die Prozedur so wie sie ist suboptimal ist.
-Er würde dir gerne helfen und einen Teil seiner Zeit für dich opfern.
-Er hat weder Zeit noch Lust, die Prozedur erst mal minutenlang zu hinterfragen, um endlich ein lauffähiges Beispiel fertig zu haben, mit dem er dann an der Performanceschraube drehen kann.
-Also wird er einfach entnervt zum nächsten ungelesenen Beitrag übergehen und du hast Pech gehabt.
Keiner will deinen kompletten Source sehen, um damit reich zu werden.
Alles was hier (zurecht) erwartet wird, ist ein Teil deiner Zeit, ein lauffähiges Beispiel an dem man herumschrauben kann anzubieten, damit man einen Teil seiner Zeit investieren kann, um dir zu helfen.
Das kann nicht zuviel verlangt sein.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
hmm, ich wollte das Thema "kompletter Source" jetzt eigentlich nicht weiter vertiefen.
ich glaube auch nicht, dass es wirklich darum geht. im studium lernt man als erstes probleme in teilprobleme zu zerlegen. und das teilproblem, welches nicht optimal läuft hat vermutlich jeder verstanden. es lässt sich ja auch ganz ohne code so erklären, dass es glasklar ist:
Es gibt 2 Images: Ein Source mit dem geladenen Bild und ein Target, dass um 1 Pixel in der Breite schmaler ist (es ist ja ein verkleinerungs-algo). In einer zusätzlichen LinkedList steht für jede Zeile, welches Pixel im Target-Image weggelassen wird. Alle anderen Pixel sollen kopiert werden.
Die Standard-Vorgehensweisen führen über Point() und Plot() wobei für jedes Image jeweils StartDrawing(ImgSource bzw. ImgTarget) aufgerufen werden muss -> langsam.
vlt schreibe ich nach meinen klausuren (in 3 wochen) mal einen Code um dieses Teilproblem herum um es zu einem Programm zu komplettieren...
vermutlich habe ich aber bis dahin die Ratschläge der API-Leute aus dem Chat verwirklicht und verstanden wie SetDIBits funzen soll bzw. eine UserLib genutzt. Ich würde den Vorgang halt gern erleichtern/beschleunigen und mir über alle Optionen bewusst werden.
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Deinen Studienplatz haste wohl eingeklagt oder?es lässt sich ja auch ganz ohne code so erklären, dass es glasklar ist:
Darauf können wir gerne wetten wenn du möchtest.vermutlich habe ich aber bis dahin die Ratschläge der API-Leute aus dem Chat verwirklicht und verstanden wie SetDIBits funzen soll bzw. eine UserLib genutzt.
Windows 10 Pro, 64-Bit / Outtakes | Derek
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
"Krise" mit einfachem i.
ich denke, HeX0R hat das gut auf den Punkt gebracht.
wenn du dich schon in Bezug auf den Umgang als beratungsresistent erweist,
wer soll dann ausprobieren, wie du auf technischen Rat reagierst?
du bist doch nicht erst seit gestern hier, also weißt du doch,
dass man im Allgemeinen lauffähigen Code posten sollte...
ich denke, HeX0R hat das gut auf den Punkt gebracht.
wenn du dich schon in Bezug auf den Umgang als beratungsresistent erweist,
wer soll dann ausprobieren, wie du auf technischen Rat reagierst?
du bist doch nicht erst seit gestern hier, also weißt du doch,
dass man im Allgemeinen lauffähigen Code posten sollte...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Es wirklich bemitleidenswert zu sehen wie im die Argumente ausgehen. Er hat leider nichts begriffen.

Genau das passiert jetztHeXOR hat geschrieben:-Also wird er einfach entnervt zum nächsten ungelesenen Beitrag übergehen und du hast Pech gehabt.
Windows 10 Pro, 64-Bit / Outtakes | Derek