Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (ERLEDIGT!) TypeScript, viele common/global Scripte --> CPU

    This topic has been deleted. Only users with topic management privileges can see it.
    • U
      uwe72 last edited by uwe72

      Ich habe viele common und global Scripte, welche in Typescript geschrieben sind. Mittlerweilen ist es so, dass wenn ich ein global-Script anpasse, die CPU auf 100% steigt und der Rechner in die Knie geht und sich nicht mehr erholt.

      Das Ganze läuft auf einem NUC (i5-10210U @ 1.6GHz, 8GB RAM.

      Im normalen Betrieb reicht die Leistung des NUCs absolut aus. Eben nur nicht bei den Prozessen TypeScript-Kompilierung und "Umkopieren der Scripte von global, jeweils in common rein).
      Hat jemand ähnliche Erfahrungen gemacht bzw. was kann man optimieren?
      Würde mich sehr über Tipps/Erfahrungen freuen.

      Jey Cee OliverIO 2 Replies Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer @uwe72 last edited by

        @uwe72 sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

        Umkopieren der Scripte von global

        Ist eigentlich wenig verwunderlich. Die Globalen Scripte werden an den Anfang aller anderen Scripte geschrieben.
        Das bedeutet die müssen auch alle neu Kompiliert werden wenn sie in Typescript geschrieben sind, aber mindestens werden sie neu gestartet.

        U G 2 Replies Last reply Reply Quote 1
        • U
          uwe72 @Jey Cee last edited by uwe72

          @jey-cee

          Ok 😉

          Was wäre eine Optimierung, weniger kleinere Global-Scripte und dafür wenige große? D.h. übertrieben gesagt, alle global-Scripte in 1 Global Script überführen?

          Als früherer Java-Entwickler tue ich mich sowieso schwer mit dieser global/common-Architektur. Würde gerne Klassen/Funktionen einfach einbinden wollen in meine Scripte.

          Jey Cee 1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer @uwe72 last edited by

            @uwe72 sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

            D.h. übertrieben gesagt, alle global-Scripte in 1 Global Script überführen?

            Naja wenn du jetzt 2 Globale Scripte hast die jeweils 50% deiner Scripte nutzen, dann würde ein großes 100% deiner Scripte betreffen. Das wäre also Kontraproduktiv.
            Du solltest dir Überlegen ob du wirklich alle Globale Scripte brauchst und in welchen Scripten.
            Seit einer weile kann man auch mit messageTo Nachrichten zwischen Scripten austauschen.
            Das sollte man bevorzugen.

            U 2 Replies Last reply Reply Quote 2
            • U
              uwe72 @Jey Cee last edited by uwe72

              Generell Danke schon einmal für deine Antworten!!

              @jey-cee said in TypeScript, viele common/global Scripte --> CPU am Anschlag:

              Naja wenn du jetzt 2 Globale Scripte hast die jeweils 50% deiner Scripte nutzen, dann würde ein großes 100% deiner Scripte betreffen. Das wäre also Kontraproduktiv.

              Würde aber bedeuten, nur dass ich es besser verstehe,

              Angenommen ich habe 10 Common-Scripte und 3 Global Scripte (g1,g2,g3):
              Ändere ich was an "g1" würde nur die neue Inhalt von "g1" in den 10 common-Scripten aktualisiert werden. Die gleichbleibenden Inhalte von g2 und g3 würden in den common-Scripten nicht angepasst werden? Vermutlich würde es dann eher helfen die Anzahl der common-Scripte zu reduzieren. Da habe ich sehr viele kleine.

              Generell:
              Ich habe eben beispielsweise in den global scripten in einem Array alle Devices hinterlegt mit einigen Zusatzinformationen (Etage, Raum,.... u.v.m.). In den Common-Scripten möchte ich auf diese Arrays zugreifen. Zudem sind in global viele Funktionen die ich immer wieder benötige und ich möchte Code nicht immer duplizieren.

              Ich habe das mit dem messageTo noch nicht ganz verstanden. Ich bräuchte aber eher was getMessageFrom 😉 D.h. Auslöser sind ja meine common-Scripte wo ich von anderer Stelle (aktuell in global) was benötige.

              paul53 1 Reply Last reply Reply Quote 0
              • U
                uwe72 @Jey Cee last edited by uwe72

                Bitte Kommentar löschen

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @uwe72 last edited by

                  @uwe72 sagte: common-Scripte zu reduzieren. Da habe ich sehr viele kleine.

                  Das ist offenbar zusammen mit

                  @uwe72 sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                  in den global scripten in einem Array alle Devices hinterlegt mit einigen Zusatzinformationen (Etage, Raum,.... u.v.m.).

                  das Problem. In jedes noch so kleine common-Script wird das Array kompiliert.

                  @uwe72 sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                  in global viele Funktionen die ich immer wieder benötige

                  Genau dafür ist "global" gedacht, da Funktionen nur kompiliert werden, wenn sie im Skript aufgerufen werden.

                  1 Reply Last reply Reply Quote 1
                  • OliverIO
                    OliverIO @uwe72 last edited by

                    @uwe72
                    Das allerbeste wäre alles in ein lokales NPM Paket zu legen und das dann in die Konfiguration des Java Skript Adapters zu packen.
                    Allerdings weiß ich nicht, ob die Konfigurationsseite mit lokalen NPM Pfaden umgehen kann.
                    https://www.stefanjudis.com/today-i-learned/npm-install-supports-local-packages/

                    U 1 Reply Last reply Reply Quote 1
                    • G
                      GombersIOB @Jey Cee last edited by

                      @jey-cee said in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                      die müssen auch alle neu Kompiliert werden wenn sie in Typescript geschrieben sind

                      Hieße doch, sie in JavaScripts zu transformieren könnte eine Lösung sein?

                      Jey Cee OliverIO 2 Replies Last reply Reply Quote 0
                      • Jey Cee
                        Jey Cee Developer @GombersIOB last edited by

                        @gombersiob das würde zwar die Last reduzieren, ja, aber nur bedingt da dennoch alle Scripte neu gestartet werden.

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          GombersIOB @Jey Cee last edited by

                          @jey-cee said in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                          da dennoch alle Scripte neu gestartet werden

                          Nur zu meinem Verständnis:
                          Jedesmal wenn ich eine Script (common) verändere, werden alle anderen Scripte auch neu gestartet? Ich verstehe, wenn ein global geändert wird, dass das notwendig ist, aber beim common?
                          Aber wie dem auch sei. Ich könnte mir vorstellen, dass das Kompilieren einen Großteil des CPU-Aufwands bedeutet. Wenn er also (ich schieße einfach mal aus dem Bauch eine Zahl) 50% spart, würde ihm das vermutlich helfen?

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            GombersIOB @GombersIOB last edited by

                            @gombersiob
                            Sorry, habe den ersten Beitrag jetzt nochmal gelesen. Es ging ja tatsächlich um das Ändern der globalen Scripte.

                            1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @GombersIOB last edited by OliverIO

                              @gombersiob sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                              @jey-cee said in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                              die müssen auch alle neu Kompiliert werden wenn sie in Typescript geschrieben sind

                              Hieße doch, sie in JavaScripts zu transformieren könnte eine Lösung sein?

                              Jein, wird es durch den typescript transpiler ja sowieso
                              Vorteil ist, das Pakete für sich kompiliert werden und erst neu kompiliert werden. Wenn es Änderungen gibt.

                              Ja, die Iobroker Skripte müssen neu gestartet werden.
                              Dann liegt aber der Performance schlucker nicht im kompilieren sondern an den Aktivitäten der Skripte selbst und bei jedem Neustart one Änderung oder nicht, geht die Performance weg.

                              Soweit ich es verstanden habe, werden die Common und global Skripte einfach vor jedes Skript kopiert.

                              Homoran G 2 Replies Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @OliverIO last edited by

                                @oliverio sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                                werden die Common und global Skripte einfach vor jedes Skript kopiert.

                                doch nicht common!

                                1 Reply Last reply Reply Quote 1
                                • G
                                  GombersIOB @OliverIO last edited by

                                  @oliverio said in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                                  Ja, die Iobroker Skripte müssen neu gestartet werden.
                                  Dann liegt aber der Performance schlucker nicht im kompilieren sondern an den Aktivitäten der Skripte selbst und bei jedem Neustart one Änderung oder nicht, geht die Performance weg.

                                  Aber die Scripte machen doch in der Regel nichts beim Neustart. Meine haben eigentlich alle einen Trigger, die laufen nicht einfach so los.

                                  Soweit ich es verstanden habe, werden die Common und global Skripte einfach vor jedes Skript kopiert.

                                  Die "Common"-Scripte sind ja die laufenden Scripte. Es werden, wie ich hier lerne die "Global"-Scripte vor jedes Common-Script kopiert.

                                  Homoran 2 Replies Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @GombersIOB last edited by

                                    @gombersiob sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                                    Aber die Scripte machen doch in der Regel nichts beim Neustart

                                    doch! sie weden kompiliert

                                    Armilar 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @GombersIOB last edited by

                                      @gombersiob sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                                      die "Global"-Scripte vor jedes Common-Script kopiert.

                                      auch vor alle Skripte, die im Wurzelverzeichnis liegen

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Homoran last edited by paul53

                                        @homoran sagte: auch vor alle Skripte, die im Wurzelverzeichnis liegen

                                        ... oder in jeder anderen Gruppe als "global".

                                        1 Reply Last reply Reply Quote 1
                                        • Armilar
                                          Armilar Most Active Forum Testing @Homoran last edited by

                                          @homoran sagte in TypeScript, viele common/global Scripte --> CPU am Anschlag:

                                          Aber die Scripte machen doch in der Regel nichts beim Neustart

                                          doch! sie weden kompiliert

                                          Aber nur wenn es Änderungen gibt...

                                          609df1d8-c90a-48aa-812b-d20d8c289793-image.png

                                          Ansonsten wird die Version aus dem Cache genutzt.

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Armilar last edited by

                                            @armilar sagte: Ansonsten wird die Version aus dem Cache genutzt.

                                            Das betrifft anscheinend den Precompiler TypeScript --> Javascript.
                                            Skripte werden bei jedem Neustart kompiliert, da beim Stoppen der RAM freigegeben wurde.

                                            U 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            55
                                            3073
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo