#pragma & #emit

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hatten wir schon per PN. #emit bringt einem fast nichts. Du kannst deine Codes nicht vergleichen, da diese komplett verschieden sind.


    würde ich nicht sagen emit ist schneller als ein normaler codes und zu dem kompakter
    jedoch ist es eher schwachsinn sein ganzes skript drauf aufzubauen.(möglich wär es schon)

  • würde ich nicht sagen emit ist schneller als ein normaler codes und zu dem kompakter
    jedoch ist es eher schwachsinn sein ganzes skript drauf aufzubauen.(möglich wär es schon)


    Nicht wirklich, wenn man den Compiler richtig einstellt (ohne debug & zeugs), wird es defintiv schneller sein. Der Compiler optimiert den Code so, dass die CPU schneller damit arbeiten kann.

  • Unbedingt würde ich mich auch nicht unbedingt allgemein auf
    Optimierung einlassen, ohne guten Beweiss emit solltest du noch etwas erklären doch hast du es berreits im "Großen Masse" auf Leistung getestet?
    Kurze erläuterung, wenn ich eine bilige Leine kaufe ist sie nicht nur wegen dem Preis(Hier Geschwindigkeit) besser es kommt auch auf die mögliche Auslastung an, teste es mal mit einer 40.000 Schleife etc.



    MFG Arendium

  • Unbedingt würde ich mich auch nicht unbedingt allgemein auf Optimierung einlassen


    Dann lass es :rolleyes:


    Kurze erläuterung, wenn ich eine bilige Leine kaufe ist sie nicht nur wegen dem Preis(Hier Geschwindigkeit) besser es kommt auch auf die mögliche Auslastung an, teste es mal mit einer 40.000 Schleife etc.


    Habe doch 4 Leistungstests gemacht und lPrototypel auch nochmal, also das hat schon so seine Vorteile.... :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Wieso nutzt er es dann :huh:


    Er verwendet es nicht zur Optimierung. YSI wäre ein klassischer Fall. Evt schon mal gepostet:


    http://forum.sa-mp.com/showthread.php?t=315531
    http://forum.sa-mp.com/showthread.php?p=1608985#post1608985


    Gruss


    Edit: Ah hier haben wir ja das wunderschöne Sätzchen :D

    Zitat

    This is generally used to extend the abilities of PAWN itself, not write things in PAWN

  • Beim Lesen des Themas fällt einem auf, dass dort steht, dass man damit anscheinend sein Script ganz schön schrotten kann.


    Zitat

    If you are writing a gamemode you probably don't need this.
    If you are writing a filterscript you probably don't need this.
    If you are writing a library you probably don't need this.
    If you are looking to optimise your mode this is not the way to go.


    Zitat

    This is a VERY advanced PAWN topic, if you don't know what to use #emit for, you don't need it, simple as! The compiler will NOT detect mistakes and it is VERY easy to screw your entire mode up using this.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Ich finde die ganze #emit-Sache bei dir leider schlecht erklärt.
    Du kennst dich vielleicht davon etwas aus, aber für jeamden dem das neu ist,
    der kann sich da schlecht was darunter vorstellen.


    Du föngst nämlich gleich mit dem Hauptteil an und zeigst ein paar Beispiele.
    Theorie ist auch, besonders bei solchen Sachen, wichtig.

  • Wieso nutzt er es dann :huh:


    Er nutzt es hauptsächlich zur umkonvertierung und schnellen hooks


    Beispiel:
    public _Class_OtherRequestClass(playerid, classid)
    {
    if (YSI_g_sHookC)
    {
    #emit PUSH.S classid
    #emit PUSH.S playerid
    #emit PUSH.C 8
    #emit LCTRL 6
    #emit ADD.C 28
    #emit PUSH.pri
    #emit LOAD.pri YSI_g_sHookC
    #emit SCTRL 6
    #emit RETN
    }
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ich finde die ganze #emit-Sache bei dir leider schlecht erklärt.
    Du kennst dich vielleicht davon etwas aus, aber für jeamden dem das neu ist,
    der kann sich da schlecht was darunter vorstellen.


    Du föngst nämlich gleich mit dem Hauptteil an und zeigst ein paar Beispiele.
    Theorie ist auch, besonders bei solchen Sachen, wichtig.


    Also noch einfacher erklären, ging ja irgendwie nicht...und ich habe mir wirklich Mühe gegeben !


    Zudem musst du ja nicht mit #emit anfangen und es eigentlich auch nicht nutzen, es dient lediglich zur Information, dass es existiert ^^


    Er nutzt es hauptsächlich zur umkonvertierung und schnellen hooks


    Ja, ich habe mir mal alle seine Includes angeschaut und deshalb weiß ich ja, dass er sehr viel #emit nutzt ;)


    Er verwendet es nicht zur Optimierung.


    Aber man könnte es doch dafür verwenden, ich meine die Tests sprechen für sich oder ? :huh:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also noch einfacher erklären, ging ja irgendwie nicht...und ich habe mir wirklich Mühe gegeben !


    Zudem musst du ja nicht mit #emit anfangen und es eigentlich auch nicht nutzen, es dient lediglich zur Information, dass es existiert ^^


    Es geht nicht darum, ob du es einfach oder kompliziert erklärst.
    Was fehlt sind die Grundlagen dieser Funktion, die Vorstellung der Möglichkeiten,
    die Erklärung weshalb, warum, wieso...


    Wenn du mir sagst: "Man kann #emit benutzen... Um Variablen zusammenzurechnen."
    dann kann damit kein Schwein was anfangen.

  • Aber man könnte es doch dafür verwenden, ich meine die Tests sprechen für sich oder ? :huh:

    Hoffe ich auch mal stark, solange man nicht grad unnötig in der Gegend rumpusht/popst (Obwohl diese Befehle zum Abwinken optimiert worden sind). Mal von Sinn der eigentlichen Optimierung abgesehen: Warum sollte man eine leserliche Syntax in eine schwer wartbare Sprache umwandeln ? Ich geh mal davon aus, dass Du keinen Server mit 150 Spielern hast und du mit ner rechten Serverauslastung hast. Klar kannste immer Mikrooptimierung betreiben, aber viel besser ist es gut wartbaren Code zu schreiben. Langsamer Code ist meistens designbedingt (zB wie viele Leute dini oder OnPlayerUpdate verwenden/verwendet haben). Pawn ansich läuft in ner VM und dort sollst Du nur Zwecks Erweiterung drauf zugreifen (emit Opcodes also) - so wie es Y_Less macht.