Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • Courses
    • Certification
      • DataMiner Operator
      • DataMiner Administrator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
    • Video Library
    • Books We Like
    • Third-party Courses
    • DevOps Enablement Services
    • Quizzes
  • RESOURCES
  • Agile
    • Agile Webspace
    • Everything Agile
      • The Agile Manifesto
      • Best Practices
      • Retro Recipes
    • Methodologies
      • The Scrum Framework
      • Kanban
      • Extreme Programming
    • Roles
      • The Product Owner
      • The Agile Coach
      • The Quality & UX Coach (QX)
  • Expert Hubs
    • DataMiner DevOps Professional Program
    • DataMiner
      • DataMiner Releases & Updates
      • System Architecture
      • Integration Studio
      • Visual Overview
      • Security
    • Technologies
      • CI/CD
      • Converged Interconnect Networks
      • DOCSIS 3.1 / DAA
      • Elasticsearch
      • Kubernetes
      • Telemetry / Flow Monitoring
      • PTP
      • SDN / ST2110 / NMOS
    • Business
      • Software Business models
      • Perpetual Use or Usage-based Services
  • Discover
    • Markets
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • Solutions
    • Use Case Library
    • DataMiner Dashboards
    • DataMiner Downloads
    • DataMiner Modules
      • Core features
      • SRM features
    • DataMiner Apps
    • Professional Services
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • Pricing
  • More
    • Feature Suggestions
    • Online DataMiner Systems
    • Leaderboard
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
    • Verify a certificate
  • >> Go to dataminer.services

SetParameter performance differences

Solved945 views5th September 2023QAction SetParameter SLScripting
1
Alex Johnson [SLC] [DevOps Advocate]456 1st September 2023 0 Comments

Hi Dojo,

Was looking through a code review and had a question purely based off curiosity: when setting a parameter via SLScripting, you see both protocol.SetParameter(PID, value) and setting the property directly e.g:

protocol.<parametername_PID> = value;

Are there performance differences? Why does it seem to be more common to see protocol.SetParameter vs setting the property directly?

Thanks in advance!

Marieke Goethals [SLC] [DevOps Enabler] Selected answer as best 5th September 2023

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
6
Laurens Moutton [SLC] [DevOps Enabler]5.36K Posted 4th September 2023 0 Comments

Hi,

The protocol.<parametername> = value; becomes accessible when using SLProtocolExt instead of SLProtocol. This helper was added to have a more natural coding style when getting or setting a parameter value.

In the background this is creating an extra interface SLProtocolExt that defines object <parametername> {get; set;}, which then has the class implementation ConcreteSLProtocolExt public object <parametername> { get {return GetParameter(<pid>);} set {SetParameter(<pid>, value);}}

This means that it is calling the same SetParameter method in the background.

-Are there performance differences?
Yes:
-As soon as Run(SLProtocolExt protocol) is being defined in a QAction then the ConcreteSLProtocolExt will be constructed and all the table parameter object types will be added to the heap. This makes it more difficult for the one that needs to debug an SLScripting memory dump as all these types are present on the heap. Thumb rule: if protocol.<parametername> is not being used by the code then please do no define Run(SLProtocolExt protocol), but try to use Run(SLProtocol protocol) as much as possible as the compiler does not need to create all the parameter objects and they will not be added to the heap.
-When protocol.<parametername> = value; is being used then in the background it needs to call the setter, which in turn calls SetParameter(); so this means an extra method being added to the callstack. This means that calling protocol.SetParameter(pid, value) will be more performant compared to protocol.<parametername> = value;

Also note that protocol.SetParameter has more flexibility, e.g. DateTime can be specified to be able to do history sets. protocol.SetParameters also exists to be able to perform multiple sets in one call, which will be more performant compared to calling multiple protocol.<parametername> = value calls one by one.

All this makes that my personal preference is to use protocol.SetParameter (or protocol.SetParameters) instead of protocol.<parametername> and not to use SLProtocolExt if not needed when defining the Run method.

Regards,

Marieke Goethals [SLC] [DevOps Enabler] Selected answer as best 5th September 2023
You are viewing 1 out of 1 answers, click here to view all answers.
Please login to be able to comment or post an answer.

My Dojo Points

0 Credits
0 Reputation

Question Tag Cloud

adl2099 (54) Alarm Console (53) alarms (70) alarm template (58) API (35) Automation (144) automation scipt (65) Automation script (95) backup (54) Cassandra (142) cloud (37) Connector (44) Correlation (42) Cube (114) Dashboard (134) Dashboards (136) database (64) DataMiner Cube (37) DIS (53) DMS (48) DOM (68) driver (48) DVE (43) Elastic (73) Elasticsearch (99) elements (49) Failover (90) GQI (51) HTTP (45) IDP (55) low code app (70) low code apps (43) MySQL (50) protocol (145) QAction (58) resources (35) security (71) SNMP (56) SRM (267) SRM resources (39) timeout (35) trending (66) upgrade (44) Visio (373) Visual Overview (290)
Privacy Policy • Terms & Conditions • Contact

© 2023 Skyline Communications. All rights reserved.

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin