ebody: Kann ein schlecht programmiertes Javascript ein Endgerät schädigen?

Hallo,

ich nutze in einem Javascript setInterval(funktionsName, 1); und habe den Eindruck, dass das zu einer hohen Belastung der Hardware eines PC´s oder Smartphones führt.

Ich habe meine Seite auf einem PC und Netbook getestet und geschaut was die Werte unter

Task-Manager -> Prozesse bzgl. CPU + Arbeitsspeicher von Chrome anzeigen.

Bei dem PC (i7 Prozessor) sieht alles normal aus, auf dem Netbook mit schwächerem Prozessor zeigt sich schon eine deutlich höhere Auslastung, ich glaube es waren so 50%.

Für ein Android Smartphone habe ich Simple System Monitor benutzt, auch hier zeigt sich mit Start der Seite ein Anstieg, aber es sieht nicht so aus, dass das Geräte kurz vorm explodieren ist :-)

Allerdings lässt mir das nicht so wirklich ruhe. Was wenn ein Nutzer, ein Gerät mit schwacher Hardware nutzt, das überhitzt und explodiert oder so? Das könnte ich mir nie verzeihen. Zudem möchte ich natürlich auch nicht verklagt werden.

Kann so etwas echt passieren, dass ein Javascript solchen Schaden anrichten kann oder sind meine Bedenken überflüssig?

Gruß ebody

  1. Hallo ebody,

    Kann so etwas echt passieren, dass ein Javascript solchen Schaden anrichten kann oder sind meine Bedenken überflüssig?

    Mit Js, lässt sich so manch ein Blödsinn/Ärgernis anstellen. Aber um den Pc braucht man sich (so weit ich weiß) keine Sorgen machen, die schalten in der Regel ab, wenn zu heiß. Aber es können natürlich Daten aus offenen Anwendungen verloren gehen.

    Gruss
    Henry

  2. Hallo,

    ich habe Javascripte im Einsatz, die auch alle CPU-Kerne zu 100% auslasten können. Ich habe auch ein Javascript, das auf der Grafikkarte rechnet. Im Betrieb läuft der Kühlventilator (wenn vorhanden) deutlich lauter und die Restzeit der Akkus schmilzt wie Schnee in der Sonne. Das Smartphone kann auch schon mal etwas warm werden. Da die Laufzeit einer Rechnung aber unter einer Minute liegt, mache ich mir da keine Sorgen. Ich vermute (!) aber, dass Rechner und Smartphones "vollgasfest" sind. Laptops und PCs regeln bei Überhitzung den Takt runter, wie Smartphones das handhaben, weiß ich nicht.

    Meiner Meinung nach kannst du deine Seitenbesucher nur damit ärgern, dass du ihnen CPU-Zeit, Arbeitsspeicher und Akkulaufzeit nimmst.

    Gruß
    Jürgen

    1. Hej JürgenB,

      Meiner Meinung nach kannst du deine Seitenbesucher nur damit ärgern, dass du ihnen CPU-Zeit, Arbeitsspeicher und Akkulaufzeit nimmst.

      Wobei Akkus ja nur eine bestimmte Anzahl an Ladezyklen haben. Insofern kann man die Hardware schon „schädigen“. Wenn auch nicht sofort kaputt machen…

      Vor allem, wenn das nciht ganz so offensichtlich ist und auf einer oft besuchten Seite, die dir (und anderen) regelmäßig Strom „klaut“.

      Marc

  3. Hallo ebody,

    ich nutze in einem Javascript setInterval(funktionsName, 1); und habe den Eindruck, dass das zu einer hohen Belastung der Hardware eines PC´s oder Smartphones führt.

    Wie gesagt, die CPU regelt sich runter wenn ihr zu heiß wird. Das liegt daran, dass sich sämtliche heutigen CPUs durch's Mainboard schmelzen würden, wenn sie ungebremst vor sich hinrechneten, und darum eine temperaturabhängige Drosselung enthalten. Hast Du einen besseren Kühler, wird weniger gedrosselt und die Kiste rechnet schneller.

    Also, solange der PC nicht von einem Tsunami geflutet wird, brauchst Du keine Angst vor einer Kernschmelze zu haben.

    Aber was zum grundgütigen Geier musst Du da im Millisekundentakt ausführen⁉️ Das wird aller Voraussicht ohnehin nicht in diesem Tempo passieren, weil die von setTimeout und setInterval erzeugten Tasks sich zusammen mit Layout und Rendering in der Warteschlange anstellen müssen. Hast Du möglicherweise Optimierungspotenzial?

    Rolf

    --
    sumpsi - posui - clusi
    1. Aber was zum grundgütigen Geier musst Du da im Millisekundentakt ausführen⁉️ Das wird aller Voraussicht ohnehin nicht in diesem Tempo passieren, weil die von setTimeout und setInterval erzeugten Tasks sich zusammen mit Layout und Rendering in der Warteschlange anstellen müssen. Hast Du möglicherweise Optimierungspotenzial?

      Ich habe auf jeden Fall noch einiges an Optimierungspotential, das wollte ich dann aber in der 2. Version angehen.

      Ich muss die aktuelle Zeit eines Youtube Videos ermitteln, um entsprechend auf die aktuelle Zeit mit dem Script reagieren zu können. Bei Sekunde x soll das passieren, bei Sekunde Y dies usw. Das Script muss sehr zeitnah reagieren. Daher 1 Millisekunde.

      Ich habe leider keine andere Möglichkeit gefunden, um die aktuelle Zeit abzufragen.

      Gruß ebody

      1. Hallo noch einmal,

        Ich muss die aktuelle Zeit eines Youtube Videos ermitteln, um entsprechend auf die aktuelle Zeit mit dem Script reagieren zu können. Bei Sekunde x soll das passieren, bei Sekunde Y dies usw. Das Script muss sehr zeitnah reagieren. Daher 1 Millisekunde.

        YouTube wird mit 20 bis 50 Frames pro Sekunde angezeigt, auf der Plattform selbst kann nur mit Sekundengranularität ins Video gesprungen werden. 1 Millisekunde ist da „viel zu genau“.

        Viele Grüße
        Robert

  4. Hallo ebody,

    ich nutze in einem Javascript setInterval(funktionsName, 1); und habe den Eindruck, dass das zu einer hohen Belastung der Hardware eines PC´s oder Smartphones führt.

    Ja, du versuchst eine Funktion jede Milisekunde auszuführen. Das erscheint mir sehr/zu oft.

    Für ein Android Smartphone habe ich Simple System Monitor benutzt, auch hier zeigt sich mit Start der Seite ein Anstieg, aber es sieht nicht so aus, dass das Geräte kurz vorm explodieren ist :-)

    Das würdest du nicht in Software erkennen 😉

    Allerdings lässt mir das nicht so wirklich ruhe. Was wenn ein Nutzer, ein Gerät mit schwacher Hardware nutzt, das überhitzt und explodiert oder so? […]

    Kann so etwas echt passieren, dass ein Javascript solchen Schaden anrichten kann oder sind meine Bedenken überflüssig?

    Überhitzen oder Explodieren wird wohl nicht auf Grund deines Skripts passieren, allerdings sorgt dein Skript (neben vielen anderen Programmen) dafür, dass der Akku schneller sein Lebensende erreicht.

    Viele Grüße
    Robert