Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Problem mit Sinus, Kosinus, Arkussinus, etc.
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 07.09.2007, 19:33    Titel: Antworten mit Zitat

Ja Kürze ist doch immer gut.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.09.2007, 19:36    Titel: Antworten mit Zitat

Caran hat Folgendes geschrieben:
Code:
if beobachter.xpos < xpos then
    seite.a = (zpos - beobachter.zpos)
    seite.b = (xpos - beobachter.xpos)
    seite.c = sqr((seite.b^2)+(seite.a^2))
    beobachter.yrot = -asin(seite.a/seite.c)*180/3.1415926 + 180
else
    seite.a = (zpos - beobachter.zpos)
    seite.b = (xpos - beobachter.xpos)
    seite.c = sqr((seite.b^2)+(seite.a^2))
    beobachter.yrot = asin(seite.a/seite.c)*180/3.1415926
end if
..so etwa..
Code:
Const Rho=45.0/Atn(1)
With seite
  .a = (zpos - beobachter.zpos)
  .b = (xpos - beobachter.xpos)
  .c = sqr((.b^2)+(.a^2))
  beobachter.yrot =IIF( beobachter.xpos < xpos , -asin(.a/.c)*Rho + 180, asin(.a/.c)*Rho)
End With

Const und With dienen hier nur der Lesbarkeit..
[Edit]
Es ist Gottseidank nur denjenigen, die sich wirklich mit FreeBASIC auskennen, aufgefallen, daß ich IFF geschrieben habe, statt IIF, wie es richtig ist lachen
thx, 4 the hinz..
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 07.09.2007, 21:18, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 07.09.2007, 19:45    Titel: Antworten mit Zitat

du kurzform ist sehr unübersichtlich.
ich ziehe das erste vor. die geschwindigkeit ist unrelevant, weil der rechenaufwand bleibt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 07.09.2007, 20:57    Titel: Antworten mit Zitat

Diese Rechnung wird einmal bis höchstens 250mal pro Schleife weiderholt. Würde es sich lohnen das in ASM zu übersetzen um es schneller zu machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.09.2007, 21:10    Titel: Antworten mit Zitat

atari hat Folgendes geschrieben:
du kurzform ist sehr unübersichtlich.
ich ziehe das erste vor. die geschwindigkeit ist unrelevant, weil der rechenaufwand bleibt.


es kommt bei speedcoding nicht auf die lesbarkeit an (die kann man durch Kommentare garantieren), sondern auf effizienz, und ytwinkys source ist da um einiges besser dran... es gilt immer: so weit optimieren wie möglich!

plonk...
Code:
<°+++><     ><o(((°>

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 07.09.2007, 21:30    Titel: Antworten mit Zitat

freebasic ist ein sprungbrett für die qbasic-progger. daher ist meine devise :

ein lesbaren code für qbasic -progger machen, damit die scheu vor dem umstieg genommen wird.

mit delphi , c++ usw kann man es machen. da ist es auch pflicht, sonst wird man als schlechter progger bezeichnet. ist ja auch klar, alle profiprogramme werden in delphi und c++ geschrieben und wer das nicht kann verdient auch kein geld und keine anerkennung.

das was da als kürzel geschrieben wurde ist keine kunst, mache ich als winavr-c-progger auch aus dem handgelenk.

kunst ist es , den anderen das klar darzustellen, das können nur sehr wenige und zwar ich und einpaar andere aus diesen forum.

es heisst : ich bin der könig und ihr seid meine diener und hab zu gehorchen oder ihr werdet gehängt.

ich bin aber ein gnädiger könig, ihr könnt weiterleben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.09.2007, 21:41    Titel: Antworten mit Zitat

hier, kriegst'n keks...

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.09.2007, 21:43    Titel: Antworten mit Zitat

[/ignoremode]
*zensiert durch den Autor!*
[ignoremode]
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 09.09.2007, 18:01, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 08.09.2007, 01:04    Titel: Antworten mit Zitat

@atari

Optimierungen und Lesbarkeit von Code sollten das 'A und O' der Programmierung sein, sowohl in QB als auch FB... das selbe gillt genauso auch fuer C/C++
Mitunter helfen kommentare, nicht nur anderen sondern auch einen selbst sich in einem Code zurecht zu finden, dem Compiler interessieren diese Zeilen nicht. Die Optimierung jedoch bringt eine Menge....

Also was Du so von Dir gibst ist absoluter Muell

btw: Die Erde dreht sich um die Sonne, nicht umgekehrt!
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 08.09.2007, 09:11    Titel: Antworten mit Zitat

Zum Thema Optimiertung:
In meinem Spiel ist das so ziemlich oberste Priorität. Ist ja auch logisch umso mehr Leistung das bringt, desto mehr Gegner können da rein ohne, dass das Programm zu ruckeln beginnt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.09.2007, 14:23    Titel: Antworten mit Zitat

Caran hat Folgendes geschrieben:
Diese Rechnung wird einmal bis höchstens 250mal pro Schleife weiderholt. Würde es sich lohnen das in ASM zu übersetzen um es schneller zu machen?

Meist nicht, da FBC selbst schon ASM-Code generiert (bei Option -r wird die asm-Datei nicht gelöscht und man kann sie sich mal ansehen).
ytwinky hat da schon die richtigen Vorschläge gemacht.
Wenn möglich würde ich noch solche x^2 durch x*x ersetzen.

Die Lesbarkeit kann man deutlich erhöhen wenn man den alten nicht optimierten Code als Kommentar beibehält und nicht löscht.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.09.2007, 14:43    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:
Wenn möglich würde ich noch solche x^2 durch x*x ersetzen.
Bei meinen Versuchen mit Counter.Bas von MichaelW habe ich festgestellt, das es keinen Unterschied macht, ob ich x^2 oder x*x nehme, deshalb bin ich darauf nicht näher eingegangen..
Ich schätze mal, daß der Compiler hier bereits optimiert zwinkern
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.09.2007, 15:12    Titel: Antworten mit Zitat

Ja, stimmt,
wird immer mit Multiplikation (fmul) erledigt.

Etwas überraschend für mich war es, dass der Zugriff auf Variablen in With ... End With viel langsamer ist.
Code:
seite.c = sqr((seite.b^2)+(seite.a^2))
ist schneller! Hätte ich nicht gedacht!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.09.2007, 15:29    Titel: Antworten mit Zitat

Wie gesagt dienten Const und With hier nur der Lesbarkeit..
With bringt keine Ersparnis, da der Compiler sich dann ja irgendwie merken muß, worauf sich die punktierten Variablen beziehen. Nur so kann ja auch die Verschachtelung von With funktionieren, wobei ich allerdings noch nicht untersucht habe, ob der Aufwand beim Verschachteln von With-Anweisungen steigt, glaube ich aber nicht..
Mit Counter.Bas habe ich schon viele Sachen entdeckt, u.A. daß Mid() zwar viele Taktzyklen benötigt, aber lediglich ~genausoviele wie Left() und Right().
Der direkte Stringzugriff mit Pointerschreibweise ist aber vergleichsweise schnell..
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 08.09.2007, 19:37    Titel: Antworten mit Zitat

In meinen Augen sollte man seinem Stil entsprechend programmieren, und der Großteil verwendet nunmal gern effizienten Code, der das macht was er soll.
Und warum soll ich in FreeBASIC die gegebenen Möglichkeiten nicht ausnutzen und den anderen zeigen, dass FB mehr als nur ein 32-Bit-QB ist? Zunge rausstrecken

(Okok, ich bin ja schon still...don't feed the f*cking troll...)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.09.2007, 03:56    Titel: Antworten mit Zitat

Ist in der tat verwunderlich was Volta da anspricht....
Schon ein kleines Beispiel:
Code:

#include "counter.bas"

Type test
    a as integer
    b as ubyte
    c as string
end type

dim Counter_Test as test

Counter_Begin             
With Counter_Test
    .a=10000
    .b=255
    .c="Hallo"
End With
Counter_End
?Counter_Cycles           '129 cycles

Counter_Begin

    Counter_Test.a=10000
    Counter_Test.b=255
    Counter_Test.c="Hallo"

Counter_End
?Counter_Cycles           '113 cicles

sleep


Zeigt den (in diesem Fall zwar nur sehr geringen) Unterschied...

Die Arbeit mit With/End With ist CPU Lastiger
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 09.09.2007, 10:08    Titel: Antworten mit Zitat

ist eigentlich logisch, das jede weitere kontrolle zeit verbraucht, ist schliesslich ein befehl der abgearbeitet werden muss und vermerkt werden muss und der speicher evtl anders angesprochen wird, es ist keine rem-zeile. brauchst schliesslich nur den asm-code anschauen.
jeder befehl hat andere eigenschaften, es ist keine zauberei.

mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.09.2007, 10:37    Titel: Antworten mit Zitat

versuchs doch mal ohne edit, oder hast Du angst Du koenntest Deinen Verstand ueberlasten wenn Du alles auf einmal schreibst ?

Klar ist da noch ein Befehl... ist bei dem Beispiel vielleicht falsch ruebergekommen, denn wenn man die messzeit innerhalb des With/End With setzt ist das ergebniss gleich....

und zum ASM, ist es eindeutig das ein 'mov dword ptr [ebp-12], 10000' wesentlich schneller ist als:

lea eax, [ebp-12]
mov dword ptr [ebp-16], eax
mov eax, dword ptr [ebp-16]
mov dword ptr [eax], 10000

worum es aber gar nicht geht, das ist eher eine Frage der FB Internen verarbeitung, nicht wie der ASM Code hinterher aussieht sonder wie FB ihn umsetzt.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 09.09.2007, 15:58    Titel: Antworten mit Zitat

Zitat:

und zum ASM, ist es eindeutig das ein 'mov dword ptr [ebp-12], 10000' wesentlich schneller ist als:


dann schreib das doch so um, dafür gibt es in freebasic diese asm-zeilen.
hier und da kann man immer etwas rauskitzeln.

Zitat:

sonder wie FB ihn umsetzt


meinst du die freebasic-hersteller können alles schaffen.
wie ich oben bereits gesagt habe , den asm-code anschauen und dran arbeiten. was verlangst du eigentlich von einem freeware-programm. freebasic ist kritikfrei und topfit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 09.09.2007, 16:09    Titel: Antworten mit Zitat

Zitat:

Nicht nur ich weiß, daß du vom Fuchsweg weggezogen bist..
..'freundlicherweise' hat sich deine Telefonnummer ja nicht geändert..
Scharf auf Anrufe?


hatte ich gestern nacht.
eine anzeige läuft wegen unbekannt.
da meine frau schwer krank, hat sie das sehr mitgenommen.

mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz