German CPU-Ausnutzung

Discussion in 'German Forum' started by Filippo, Oct 7, 2008.

  1. Filippo

    Filippo Expert Licensed User

    Hallo,

    kann mir jemanden sagen warum .Net oder Basic4ppc-Programme viel mehr CPU (Arbeitsspeicher) brauchen als C++ Programme?

    Hier ein Beispiel mit zwei File-Explorer, den "Total Commander v2.5" und mein fgExplorer, wobei mein Programm im vergleich viel weniger kann.

    Total Commander = 42 KB:)
    fgExplorer= 1574 KB:(

    Alles natürlich in leerlauf gemessen.


    Vielen Dank schon in voraus.

    Ciao,
    Filippo
     
  2. specci48

    specci48 Well-Known Member Licensed User

    Hi Filippo,

    ein kompiliertes C++ Programm bringt so ziemlich alles mit was es zu Laufen braucht und zwar auch genau nur das, wenn man eimal von möglichen Zusatzbibliotheken absieht. Außerdem ist es direkt lauffähig, da es genau für eine bestimmte Hardware-Umgebung kompiliert wurde.

    Wenn eine .NET-Anwendung gestartet wird, muss diese zur Laufzeit vom JIT-Compiler (Just-In-Time-Compiler) beim jeweils ersten Zugriff von Klassen und Methoden für die aktuell vorgefundene Prozessor-Architektur in CPU-Anweisungen übersetzt (kompiliert) werden. Außerdem müssen alle referenzierten externen Assemblies geladen werden, denn die eigene .NET-Anwendung besteht ja zum größten Teil aus Aufrufen der Klassenbibliothek vom .NET Framework.
    Dieser ganze "Aufwand" sorgt dafür, dass
    a) das Starten einer .Net-Anwendung i.d.R. länger dauert
    b) wesentlich mehr Arbeitsspeicher belegt wird

    Im Gegenzug hat man aber den Vorteil, dass die Programmierung unabhängig von der Prozessor-Architektur erfolgen kann. Gerade wir mit Basic4ppc nutzen ja oftmals die Möglichkeit, quasi per Knopfdruck eine Desktop- und eine Device-Variante unserer Programme zu erzeugen.
    Außerdem nimmt einem das Framework beim Programmieren etliche Arbeit ab, da man sich um viele Dinge (z.B. Speicherverwaltung, Dateihandling, ...) nicht so detailiert kümmern muss, wie es bei C++ Programmen notwendig ist.

    Der gesamte Vergleich gilt übrigens analog für Java-Programme.


    Gruß
    specci48
     
  3. Filippo

    Filippo Expert Licensed User

    Hallo specci48,

    vielen Dank für die Ausführliche Antwort.

    Du hast ja recht, es hat schon viele vorteile.

    Stell dir aber jetzt vor es laufen 10 Basic4ppc-Anwendungen auf ein PPC, dann ist der Speicher ganz schnell voll, oder?
    Na ja, man kann nicht alles haben.:sign0148:
     
  4. specci48

    specci48 Well-Known Member Licensed User

    Nein, denn der JIT-Compiler und die Klassenbibliotheken müssen ja nur ein einziges mal in den Speicher. Für weitere Programme muss dann nur der wesentlich kleinere .Net Programmcode der Anwendung geladen werden.

    Und sofern der Arbeitsspeicher nicht anderweitig verwendet wird, bleiben die .Net Komponenten auch nach dem Programmende im Speicher erhalten. Somit erklärt sich auch der Effekt, das der erneute Start eines Programms (nach einem Programmende) oftmals spürbar schneller als beim ersten Aufruf erfolgt.

    Aber man kann immer noch das Beste aus dem Vorhandenen machen... ;)


    Gruß
    specci48
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice