Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. (Erledigt) Optimierung Scripte hinsichtlich RAM und CPU

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    (Erledigt) Optimierung Scripte hinsichtlich RAM und CPU

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

      Ich habe sehr viele TypeScript-Scripte und stoße da an Limits was das Thema RAM und CPU angeht.

      Ich habe auch einige global-Scripte (welche ja dann in jedes Common-Script reinkopiert wird), benötige diese, da ich redundantfreien Code schreiben möchte. Diverse Funktionen werden in mehreren common-Scripten verwendet und möchte die Funktionen eben nur 1x schreiben. Leider wird beim Kopieren von global-->common nicht einmal die JavaScript-Instanz berücksichtigt. Wird einfach kopiert, instanzübergreifend.

      Meine Fragen sind:

      1. Gibt es nicht doch eine Möglichkeit die Inhalte der global-Scripte in ein externes Script (Datei im Filesystem) abzulegen und in den Common-Scripten über import/requires einzubinden, eben dann nur in den Scripten wo man sie tatsächlich benötigt? Also so wie man es bei eine OOP machen würde. Denke aber auch innherlab der ioBroker-Adapter wird so gearbeitet
      2. Kann man sonst was optimieren/falsch machen bei der Verwendung von Triggern, Variablen,....
      3. Viele kleine besser als weniger große Scripte? Ich liebe es eher viele kleinere zu nehmen um mehr Struktur zu haben.
      4. Gibt es sonst noch Tipps, welche man beachten sollte um RAM/CPU zu schonen?

      DANKE EUCH!

      T 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @uwe72 last edited by ticaki

        @uwe72

        Zu 1. haben wir doch schon diskutiert. Paul hat hier ein einfaches Beispiel wie man js importiert: https://forum.iobroker.net/post/1220037 in dem Post darunter hab ich unseren Topic verlinkt.

        zu 2. du kannst Trigger durch Verwendung von change und val soweit einschränken das du keine unnötigen Aufrufe hast.

        zu 3. Große Skripte verbrauchen insgesamt weniger Speicher wenn ich das richtig sehe. Wäre ja auch nachvollziehbar, weil die jeweils in ihrer eigenen Sandbox laufen.

        Bildschirmfoto 2024-12-13 um 01.03.37.png
        Adapter 1. 36 Skripte TS & JS
        Adapter 2. 1 Skript TS läuft alle x Minuten und überprüft alle anderen Skripte/Adapter/Geräte
        Adapter 3. 4 * nspanel TS (13000 Zeilen)

        zu 4. Ram ist solange du es nicht mit endlos Arrays vollschreibst wurscht. Ein Aufruf von getState() kostet CPU - zwischenspeichern in einer Variable Ram, nimm das wovon du mehr hast 🙂

        Aber tips zum optimieren zu geben ohne den Code zu kennen, da gibts sprüche mit Glaskugeln und so 🙂

        U 1 Reply Last reply Reply Quote 1
        • U
          uwe72 @ticaki last edited by uwe72

          zu 2. du kannst Trigger durch Verwendung von change und val soweit einschränken das du keine unnötigen Aufrufe hast.

          Ich habe oft so was. Möchte benachrichtigt werden, wenn sich der Wert ändert.

          on({id: "iot.0.services.custom_geofency_uwe", change: 'any'},  obj => {    
              var value = obj.state.val;
              var oldValue = obj.oldState.val;
              if (value != oldValue) {
                  // do something
              }
          });
          

          Du meinst dann wäre es besser so zu lösen?

          on({id: "iot.0.services.custom_geofency_uwe", change: 'ne'},  obj => {    
              // do something
          });
          
          U 1 Reply Last reply Reply Quote 1
          • U
            uwe72 @uwe72 last edited by

            zu 1.

            Habe für mich mal eine funktionierende Lösung in einem neuen Post aufgeschrieben:
            https://forum.iobroker.net/topic/78632/info-auslagerung-von-scripte-aus-global-aufs-filesystem

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

            Support us

            ioBroker
            Community Adapters
            Donate

            572
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            2
            4
            294
            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