2009-08-03 9 views

Antwort

6

Inline-Code kann erfordern Kompilierung das erste Mal, wenn die Anfrage gestellt wird. Danach (oder wenn es vorkompiliert ist) gibt es absolut keinen Unterschied zwischen ihnen.

Übrigens sollte der Geschwindigkeitsunterschied, auch wenn er kompiliert werden muss, unbedeutend sein, da ASP.NET sowieso eine Quelldatei kompilieren muss. Der Unterschied besteht darin, einige Zeilen Code in eine große Quelldatei einzufügen!

+0

Ist nicht die gesamte Vorlage kompiliert? – Dykam

+0

Die gesamte aspx ist in C#/VB-Quelle kompiliert mit Inline-Code direkt an der entsprechenden Stelle enthalten. Die C# -Quelle wird in eine IL-Assembly kompiliert. –

1

Ja, ish ... Wenn Sie zur Laufzeit kompilieren, werden Sie immer teurer sein als etwas, das nicht muss, aber das Kompilieren wird im Cache gespeichert (wenn Sie so wollen) erste Anfrage, so dass Sie von da an keinen Unterschied mehr bekommen.

Es gibt wahrscheinlich jemand, der einen anderen Grund kennt, aber der einzige realistische Zweck für Inline ist die Möglichkeit, Hotfixes ohne Neuaufbau + Neuverteilung zu machen: die Art von Dingen, die Sie in kleinen oder frühen Entwicklungsprojekten tun können. Ich persönlich finde auch inline nur ein wenig ... ästhetisch unangenehm.

+0

Der Hauptgrund, dass Inline überhaupt möglich ist, ist Rückwärtskompatibilität mit ASP.classic –

+0

Es gibt zwei Arten von Inline-Code - klassische asp-ish Inline und ein großes "Skript" -Tag am Anfang der Datei, die Code immer noch vom Markup trennt . –

+0

Ich bin mir nicht sicher, ob ASP "Klassiker" jemals ein Problem für die ASP.NET-Entwickler selbst war ... – annakata

1

Die ASPX-Seiten müssen trotzdem analysiert und kompiliert werden, da ASP.Net sie in Klassen verwandelt, die vom Codebehind erben (daher das Attribut inherit in der Page-Direktive), so dass eine Kompilierung in jedem Fall notwendig ist. Der Unterschied zwischen den beiden für die ersten Läufe wird vernachlässigbar sein, es sei denn, wir sprechen von mehreren tausend Codezeilen.

Aber ich stimme mit Anna überein: Inline ist icky.

0

Ich bin nicht sicher, ob die erzeugte Assembly das Attribut AllowOptimize auf on oder off gesetzt hat. Ich kann keine Dokumentation finden, die dies auf irgendeine Weise anzeigt.

Daher ist es möglich, dass der resultierende Code vom JIT nicht auf die gleiche Weise optimiert wird.

Ich bezweifle, dass dies einen signifikanten Unterschied wenn überhaupt (wie ich sagte, könnte dies auf eine andere Weise gesteuert werden), aber sicherlich könnte es bestimmte Operationen beeinträchtigen, wenn es zum Beispiel inlining deaktiviert und Sie hatten eine große, extrem enge Schleife . Solch ein Konstrukt wäre wahrscheinlich eine schlechte Wahl innerhalb einer asp.net-Seite, so dass dies kein Problem sein sollte.

0

Nein. Sofern Sie kein Webprojekt verwenden, muss die Site beim ersten Treffer kompiliert werden. Das betrifft sowohl Inline als auch Code. Danach laufen sie ziemlich schnell.