Aktuelle Zeit: 19.10.2019 18:52

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 30.08.2019 11:21 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
STARGÅTE hat geschrieben:
>> "Genauso diese kleinen unnötigen Dinge wie Proceduren am Ende, wäre keine grosse Sache dies mit einem einfachen Skript zu beheben."
Was meinst du damit?

Er fragt sich, warum man Procedures im Voraus deklarieren muss. Antwort: Das liegt auch daran, dass es ein Single-Pass-Compiler ist. Aber es gibt IDE-Tools, die für dich alles im Voraus deklarieren bevor es zum Compiler geschickt wird.

@Peti:
Bezüglich Bild-Dekoder hat STARGÅTE eigentlich schon alles gesagt, aber ich möchte trotzdem nochmal einhaken. Dateiendungen sind Schall und Rauch. Windows ist das einzige Betriebssystem, das da so viel Wert drauf legt. Unter Linux werden Dateitypen z.B. immer nach ihrem Inhalt beurteilt und nicht nach ihrer Endung.

Und dann wegen InitSprite() und InitKeyboard(). Es ist praktisch, dass man das alles einzeln initialisieren kann. Vielleicht möchte man ja Sprites darstellen, aber die Tastatureingaben über die normale Eventverarbeitung abhandeln. Oder man will mit InitMouse() und InitKeyboard() zwar Maus und Tastatur fangen, aber gar nicht mit Sprites arbeiten. Es ist schon wichtig, dass das alles getrennt ist. Und du musst zugeben, dass das jetzt kein hoher Aufwand ist. Wenn du eh immer nur alles zusammen verwendest, kannst du dir ja deine eigene Include mit ein paar Wrapper-Befehlen bauen, die du einfach in jedes Projekt mit rein nimmst.

Print und Zahlen.
Du hättest bei Print gerne die selbe Möglichkeit wie bei Debug? Das geht leider nicht direkt, aber neuerdings kann man Strings mit Zahlenvariablen verknüpfen ohne Str() zu nutzen.
Code:
zahl = 5
Print("zahl=" + zahl)

Leider funktioniert das nur mit einzelnen Variablen und nicht etwa so:
Code:
Print("Ergebnis=" + (zahl * 2)

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 30.08.2019 13:18 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
Peti hat geschrieben:
... oder Loadimage den Decoder an Hand der Endung selber wählt
Es soll Fälle geben, wo zur Kompilierzeit noch nicht fest steht, welche Images geladen werden. Ich hätte mir früher auch gewünscht, dass dies automatisch geht, aber dabei Eingaben zur Laufzeit nicht bedacht. Die paar Zeilen manuell hinzuzufügen, ist definitiv nicht das große Drama.

NicTheQuick hat geschrieben:
Er fragt sich, warum man Procedures im Voraus deklarieren muss. Antwort: Das liegt auch daran, dass es ein Single-Pass-Compiler ist.
Es liegt nicht 'auch' daran, es liegt daran :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 30.08.2019 14:40 
Offline

Registriert: 25.04.2018 22:36
Zu deinen Fragen.

Wie ich das meine mit den Proceduren ?

Nun einfach dahin das man diese unnötige Einschränkung behebt in dem der Compiler diese vor der Compilierung an den Anfang setzt oder beim Eingeben der Kopfzeile wird automatisch eine Deklaration an den Anfang geschrieben, sehe da wirklich kein Problem. Machen andere Basics ja auch und kaum langsamer.

Warum hab ich mich für PB entschieden?

Grundsätzlich weil ich schreibfaul bin und daher Basic liebe ;) Bin auf der suche, wollte es ausprobieren. Es mittlerweile kaum moderne Basics gibt die die neusten Librarys unterstützen sowie 64 Bit.
Viele gute Ansätze werden nach kurzer Zeit nicht mehr weiter entwickelt da vermutlich finanziell uninteressant, insbesondere bei kostenlosen lebenslangen UG.
Gleiches galt für Blitz3D mit dem ich sehr zufrieden war. Seine Syntax ist wesentlich logischer und der zu schreibende Code sicherlich 30% kürzer als in PB. Der Umgang mit DirectX7 ist sehr einfach und es hatte ein klares Konzept, teilweise ist es auch deutlich schneller als PB , leider einfach in die Jahre gekommen. Deine Erklärung aus Sicht des Entwicklers kann man teilen,man kann jedes Problem erklären. Aus Sicht des Benutzers möchte man jedoch eine Lösung. Stell dir vor du müsstes um dein Auto zu starten, an einer Kurbel drehen und der Hersteller würde dir dies mit unnötigem Gewicht durch den Anlasser erklären ;)
Speicherbedarf/ Programmgrösse oder Geschwindigkeit des Compilers ist auf heutigen Rechnern kaum eine Frage, wenn schon eher Resourcenbedarf zur Laufzeit.(Sonst dürftest du auch keine 64Bit Anwendungen schreiben, da steht zu 98% in den oberen 4 Bytes der wert 0 ;))

Aber nochmals vielen Dank für die freundlichen Erläuterungen, die Community hier ist wirklich Top.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 30.08.2019 23:07 
Offline

Registriert: 25.04.2018 22:36
Zu deinen Fragen.

Warum hab ich es gekauft ?
Um es zu testen. Weil ich schreibfaul bin und desshalb Basic liebe. Weil mein Blitz3D (mit dem ich sehr zufrieden war) in die Jahre gekommen ist.

Wie ich das meine mit den Proceduren ?
Das einfachste wäre automatisch vom Editor eine verdeckte Deklaration am Programmanfang einzufügen und schon wäre die Beschränkung aufgehoben.
Aber eigentlich muss dies der Entwickler lösen. (desshalb heisst er ja so)

Aus Sicht des Entwicklers ?

Du meinst, wenn du dein Auto mit einer Kurbel starten müsstest und dir der Entwickler erklärt dies sei sinnvoll, weil dadurch das unnötige Gewicht des Anlassers eingespart werden kann? ;)
Der sollte eigentlich die Problemlösung und das Bedürfnis des Benutzers und nicht seine eigene Sicht sehen. ;)
Und wenn dieser aber findet 3 x langsamer bei Division ist ok, für mich ist das nicht ok (300% !). Div und idiv sind übrigens in Ordnung, das verwenden andere auch, da ist was anderes faul genauso wie bei den Zuweisungen zu Feldern die 50% zu langsam sind.
Die Grösse des Codes bei heutigen Systemen ist ausser für vorchristliche Puritaner kaum relevant, eher der Ressourcenbedarf zur Laufzeit und da ist schneller immer besser.

Danke für deinen Typ mit Godot Engine, besitze schon Unity

Nochmals vielen Dank für eure freundliche Unterstützung, wenigstens die Community ist Top.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Noch ein Test
BeitragVerfasst: 30.08.2019 23:44 
Offline

Registriert: 25.04.2018 22:36
Nachtrag: Folgende Progrämmchen läuft in Blitz3D 300% schneller als in PB.
Auf meinem Rechner 500ms zu 1519ms
Da ist definitiv vieles faul.


Code:
OpenConsole()

Dim feld(1920,1080)
RGB=5646469

zeit = ElapsedMilliseconds()

For d=0 To 100
  For y=0 To 1080
    For x=0 To 1920
      feld(x,y)=RGB
    Next
  Next
Next

PrintN (Str(ElapsedMilliseconds()-zeit))
Print("Druecken Sie Enter zum beenden")
Input()
End


__________________________________________________
Code-Tags hinzugefügt
31.08.2019
RSBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 31.08.2019 00:02 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
Könntest du bitte mal CodeTags verwenden? Ich glaube kaum, dass die Mods hier auf Dauer Lust haben deine Beiträge nachzubearbeiten.

Tausch mal die folgenden Zeilen aus:
Code:
For y=0 To 1080
For x=0 To 1920


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Noch ein Test
BeitragVerfasst: 31.08.2019 01:45 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Peti hat geschrieben:
Nachtrag: Folgende Progrämmchen läuft in Blitz3D 300% schneller als in PB.
Auf meinem Rechner 500ms zu 1519ms
Da ist definitiv vieles faul.
...


Kannst du den Blitz3D Code posten?

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 31.08.2019 11:58 
Offline

Registriert: 29.10.2011 16:54
Hallo,

die Reihenfolge in der auf den Speicher zugegriffen wird ist immens wichtig.

Bei kommt hier ein Zeitunterschied von über 200 % von dem auf dem ersten Blick gleiche Programmcode.

Viele Grüße


Code:
OpenConsole()

Dim feld(1920,1080)
RGB=5646469

zeit = ElapsedMilliseconds()

For d=0 To 100
  For y=0 To 1080
    For x=0 To 1920
      feld(x,y)=RGB
    Next
  Next
Next

PrintN (Str(ElapsedMilliseconds()-zeit))

zeit = ElapsedMilliseconds()

For d=0 To 100
  For x=0 To 1920
   For y=0 To 1080
      feld(x,y)=RGB
    Next
  Next
Next


PrintN (Str(ElapsedMilliseconds()-zeit))
Print("Druecken Sie Enter zum beenden")
Input()
End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 31.08.2019 12:14 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
ST4242 hat geschrieben:
Hallo,

die Reihenfolge in der auf den Speicher zugegriffen wird ist immens wichtig.

Bei kommt hier ein Zeitunterschied von über 200 % von dem auf dem ersten Blick gleiche Programmcode.
...


Nice, 552 ms <)

Ich vermute zudem das der Blitz3D Code weniger Schleifen hat,
da der Code sich auf die Bildschirmgröße bezog. :)

Code:
;-> Dim feld(1919,1079)

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Langsamer Code
BeitragVerfasst: 31.08.2019 13:03 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
ST4242 hat geschrieben:
Hallo,

die Reihenfolge in der auf den Speicher zugegriffen wird ist immens wichtig.

Bei kommt hier ein Zeitunterschied von über 200 % von dem auf dem ersten Blick gleiche Programmcode.

Viele Grüße


Code:
OpenConsole()

Dim feld(1920,1080)
RGB=5646469

zeit = ElapsedMilliseconds()

For d=0 To 100
  For y=0 To 1080
    For x=0 To 1920
      feld(x,y)=RGB
    Next
  Next
Next

PrintN (Str(ElapsedMilliseconds()-zeit))

zeit = ElapsedMilliseconds()

For d=0 To 100
  For x=0 To 1920
   For y=0 To 1080
      feld(x,y)=RGB
    Next
  Next
Next


PrintN (Str(ElapsedMilliseconds()-zeit))
Print("Druecken Sie Enter zum beenden")
Input()
End


Wow, hier auf meinem Rechner habe ich sogar:
Zitat:
7599
1555
Druecken Sie Enter zum beenden

Also 5 mal schneller. Danke für den Hinweis.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye