• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es sind in diesem Monat eine ganze Reihe von Fotos eingesandt worden. Welches überzeugt Euch am meisten? Hier geht es lang zur Abstimmung --> Klick

Warum ist Flash so rechenintensiv?

Jooogy

Tokyo Rose
Registriert
27.10.05
Beiträge
66
Mir ist klar, dass ein mit Flash codiertes Video erst einmal dekodiert werden muss, damit es im Browser angezeigt werden kann. Aber warum ist das so rechenintensiv? Wenn ich Flash-Videos über den Browser angucke, dreht nach einigen Minuten der Lüfter meines MacBooks ordentlich auf. Auch wenn der Vergleich noch nicht passend ist: Bei Videos, die mit HTML5 eingebettet sind, bleibt der Lüfter leise.


Zudem beträgt dann die CPU-Auslastung von Firefox (Aktivitätsanzeige) zwischen 60 und 70 Prozent.


Danke für die Antworten.


J*
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
1) Weil die Grafikbeschleunigerfunktionen der Hardware nicht genutzt werden.
2) Weil das ganze sowas von Murksbanane programmiert ist... (mal ganz abgesehen vom beknackten -eigentlich gar nicht existenten- Dateiformat...)
 

Jooogy

Tokyo Rose
Registriert
27.10.05
Beiträge
66
Hilf mir auf die Sprünge, ich bin kein Programmierer: Was meinst du mit interpretiert?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Sog. "Interpreterprogramme" (auch "Skripte" genannt) werden nicht schon im Vorfeld, sondern erst in Echtzeit, also jedes mal während der Ausführung von einer für Menschen lesbaren "Hochsprache" in den prozessorkonformen Binärcode übersetzt. Das macht solche Programme zwar flexibel, weil prinzipiell hardwareunabhängig, aber leider auch rechenintensiv und damit träge.
 

Jooogy

Tokyo Rose
Registriert
27.10.05
Beiträge
66
Ah ok, von einer von Menschen lesbaren Hochsprache. Also wird die Arbeit nicht von der Hardware, sonder komplett softwareseitig umgesetzt?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ääähmmm...
Naja, das "vom Menschen lesbar" muss nicht unbedingt zutreffen (oft, aber nicht immer).
Treffender wäre wohl: Eine abstrakt gehaltene, allgemeingültige Form, die nicht auf ein bestimmtes Prozessormodell, eine bestimmte Rechnerkonfiguration und/oder an ein bestimmtes Betriebssystem angepasst ist.
(Die Metapher "für Menschen lesbar" weckt hier zu viele Erwartungen...)

Diese (letzenendes immer zwingend erforderliche) Anpassung ist die in Echtzeit ausgeführte Aufgabe des dazugehörigen Interpreters, der auf dem Zielrechner bereits vorhanden sein muss. Dieser Interpreter kann ein installierbares Softwaremodul sein, wie zB bei Flash das entsprechende Browser-Plugin, oder aber auch ein Stück Software das schon direkt in die Hardware des Geräts fest integriert wurde, zB der PostScript-Interpreter eines entsprechend ausgestatteten Laserdruckers.
Moderne Betriebssyteme kommen heute schon mit einer Vielzahl von passenden Interpretern für unzählige Sprachen daher, die zu ihrer Verwendung erst mal in maschinengerechte Anweisungen zu übersetzen sind. Dazu gehört zB auch dein Webbrowser, der abstraktes HTML in konkrete Bilddaten umsetzen muss, das Programm "bash", das in deinem Terminal die eingegebenen Befehlszeilen abarbeitet oder GarageBand, wenn es Kompositionen in ihrer musikalischen Notation einliest, um aus diesen Informationen hörbare Töne zu synthetisieren.

Wenn nun ein in einer Interpretersprache gehaltenes Programm einen sehr direkten Zugriff auf die Hardware des Rechners benötigt, um die darin schlummernden Funktionen voll auszunutzen, dann ist auch dieser Zugriff die Aufgabe des bereits auf dem Rechner existierenden Interpreters. Wurde dieser bereits so geschrieben, dass er über die entsprechenden Fähigkeiten verfügt, dann braucht er noch die Erlaubnis des Systemprogrammierers oder des betreffenden Systemadministrators, um sich über die passenden Schnittstellen des Systems mit der Hardware verbinden zu können. Direkter Zugriff auf Hardware ist nämlich in modernen Betriebssystemen ein exklusives Privileg des Systemkernels und/oder seiner dafür vorgesehenen Hilfskomponenten.
Da sich ein Flash-Interpreter (...das Browser-Plugin...) auch mit normalen Benutzerrechten installieren oder entfernen lässt, steht von vorneherein eins fest: Eine direkte Kommunikation mit der Hardware findet hier gar nicht statt - das geht ohne die Kooperation mit dem Kernel überhaupt nicht. Diese Kooperation für selbst hinzugefügte Programme zu etablieren bleibt den "normalen" Anwendern und ihrer Software aus Sicherheitsgründen strengstens verboten.

Ergo:
Der Flash-verarbeitende Software-Kobold muss alle anfallenden Berechnungen zur Bild- und Tondarstellung selbst in Software erledigen, denn auf die dafür spezialisierten Chips auf Grafik- oder Soundkarte hat er keine unmittelbare Befehlsgewalt. Wenn man jetzt noch berücksichtigt, dass allein schon der Hilfsprozessor der GraKa heute bereits leistungsfähiger angelegt ist als der Zentralprozessor selbst, dann ist wohl nicht mehr schwer nachzuvollziehen, dass diese Form von Software auf eine Unmenge an sehr nützlichen Resourcen verzichten muss. Bei dieser reinen Softwareverarbeitung bleiben alle diese Spezialaufgaben bei der CPU des Rechners hängen, und das ganze ist (oft) auch noch in seiner abstrahierten Form und daher nur mit vielen umständlichen Zusatzschritten zu bewältigen.
(Im Falle von Flash kann man sehen, dass das auch mal sehr viele zusätzliche Schritte sein können...)
 

Erunno

Tydemans Early Worcester
Registriert
26.01.08
Beiträge
391
Sog. "Interpreterprogramme" (auch "Skripte" genannt) werden nicht schon im Vorfeld, sondern erst in Echtzeit, also jedes mal während der Ausführung von einer für Menschen lesbaren "Hochsprache" in den prozessorkonformen Binärcode übersetzt.

Wenn man es ganz genau nimmt, dann wird bei rein interpretierten Sprachen (also JIT Compiler außen vorgenommen) das Programm nicht in Binärcode übersetzt, sondern von der Laufzeitumgebung analysiert und entsprechende vorkompilierte Funktionen aufgerufen.
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Compiler: Liest ein in der Sprache L_i geschriebenes Programm ein und gibt es in L_j aus.
Interpreter: Nimmt Instruktionen des L_i-Programms einzeln, transformiert sie in eine Sequenz der Sprache L_j und führt sie auf Ebene j aus.

Daher sind i.d.R interpretierte Programme langsamer als kompilierte. Aber ich denke es wurde nun hinreichend erklärt, was ein Interpreter ist
 

sailing-away

Weißer Winterglockenapfel
Registriert
27.09.07
Beiträge
879
Flash ist der größte Dreck, der zur Zeit auf unseren Rechnern läuft. Obwohl es interpretiert wird, ist es sehr prozessornah programmiert. Dies bedeutet, es unterwandert Sicherheitsmechanismen des Betriebssystem und ist daher ein Sicherheitsrisiko für den Anwender als auch für die Stabilität des Systems. Das Betriebssystem kann Fehler nicht abfangen, dies muss alles in der Flash-Applikation selbst passieren. Ist die Flash-Applikation unsauber programmiert, können Fehler zum Absturz des ganzen Systems führen.

Die EU kümmert sich um jeden Scheiß, warum verbieten die nicht mal Flash?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Obwohl es interpretiert wird, ist es sehr prozessornah programmiert. Dies bedeutet, es unterwandert Sicherheitsmechanismen des Betriebssystem
1) Alle nativen Kompilate sind "prozessornah programmiert".
Näher geht überhaupt nicht. Ohne Ausnahme, geht gar nicht anders.

2) Flash läuft zu 100,0% im Benutzerkontext.
Bringt es ein System tatsächlich zum Absturz, dann hat nicht Flash den Fehler sondern ausschliesslich das OS selbst.
 

Jooogy

Tokyo Rose
Registriert
27.10.05
Beiträge
66
Hardwareunterstützung

Noch eine simple Frage: Warum entwirft Adobe dann nicht eine Hardwareunterstützung für den Flash-Player? Auf Windows-Rechner gibt es da doch bereits eine Unterstützung? So wie ich das richtig verstanden habe, benötigt z.B. HTML5-Video kein Browser-Plugin und rendert oder berechnet die Daten dann über die Computer-Hardware.
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Grafikbeschleunigtes Flash soll es auch bald für Mac OS X geben, soweit ich weiß unterstützt eine Alpha- oder Beta-Version es schon.