-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: Durch inline kleinerer Code?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260

    Durch inline kleinerer Code?

    Anzeige

    Hio. Ich arbeit mich gerade von Java in C++ ein. Hab da gelernt, das eine Funktion die mit inline markiert ist:
    a) Schneller ist beim ausführen aber dadurch
    b) die Größe der compilierten Datei vergrößtet
    Aber irgendwie werden bei mir die Dateien dadruch kleiner? Ich compilier mit avr-g++. Ohne inlines ist der Code etwa 2Kb groß, mit inlines etwa <1Kb...
    Ist das normal?

    cu
    Luma

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ganz allgemein kann man das Ergebnis nicht vorhersagen. Du kannst mit "inline" auch jederzeit einen Stiefel reinschreiben, der den kompletten Flash abfackelt.
    Ich weiß nicht, ob der avr-g++ auch ein Disassembler listing hergibt. da könntest du vergleichen, was er macht, und was du in Assembler schreiben würdest.
    das Verhältnis 2:1 ist schon ein bißchen viel, aber, wie gesagt, man müßt sich den Code anschauen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Wahh? Kann ich den meinen Bobby mit den falschen Befehlen schrotten?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    nein, nein, abfackeln heißt, alles verbrauchen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Uhi ich dachte schon. Ich glaub, dann würden sich bei mir die Dinger nur so stapeln ;D...

    Edit: Ist den das Programm in dem AVR nicht auch so groß wie auf meinem Rechner? Und wenn nicht, woher weiß man das?

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Die Größe der Hex-File kannst du als Maßstab nehmen
    Ich hab mich undeutlich ausgedrückt: Du kannst mit inline Assembler Platz sparen, wenn du geschickt bist, du kannst aber genausogut MEHR verbrauchen als der C, wenn du die Vorteile des Assembler nicht wirklich ausnützen kannst.
    Wenn nicht wirklich notwendig ist, tät ich es aber lassen mit dem inline, weil damit ist der ganze Datenkapsel- Object- Klassengedanke irgendwo im Brunnen.
    bis morgen, ich begebe mich zur Ruhe !
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    inline != inline assembler.

    Das sind zwei paar Schuhe. Ich denke, der OP meinte das Schlüsselwort "inline", das man vor Funktionen schreiben kann.

    Um diesen signifikanten Größenunterschied genauer erklären zu können, könnte etwas Quellcode aber nicht schaden.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Also eine mit inline deklarierte Funktion in C wird vom Compiler quasi wie eine Art Makro* behandelt.
    d.h. es wird kein Call-Befehl erzeugt, sondern der Funktionsrumpf einfach an die Stelle kopiert (dadurch größerer Code).

    Für kleine Funktionen kann das sehr praktisch sein.


    Aber:
    nur weil inline vor der Funktion steht heisst das noch lange nicht, daß der Compiler sie dann auch wirklich inline macht!
    Es ist also eher als eine Art "Empfehlung" zu verstehen.

    Bei sehr grossen Funktionen wird der Compiler das inline ignorieren,
    ebenso wird er bei sehr vielen kleinen inline-Funktionen nur einen Teil wirklich als inline behandeln.




    *Im Gegensatz zu einem Makro ist es aber eine echte Funktion mit Typprüfung etc.
    So viele Treppen und so wenig Zeit!

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ahhhhhhhhh so !
    verstehe ! Auch was dazugelernt !
    Das ist so wie "register" oder das Götz-Zitat:
    Eine Anheimstellung, der Folge zu leisten dem Angesprochenen frei steht
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    wenn du einmal den winavrc-hexcode im AVR studio anschaust, kanst du sehen das dieser hex-code 99% eines assemblercodes ist. was willst du da noch optimieren???? inline-code bei winavr-c --- nein!!!
    wenn du einmal den hexcode von Bascom anschaust, kannst du festellen, das der wesentlich grösser ist und sehr grosszügig mit den routinen rumprotzt. inline-code bei Bascom ---- ja!!!!
    mfg pebisoft

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •