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
    • E-learning Courses
    • Open Classroom Training
    • Certification
      • DataMiner Fundamentals
      • DataMiner Configurator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
      • Verify a certificate
    • Tutorials
    • Video Library
    • Books We Like
    • >> Go to DataMiner Docs
  • Expert Center
    • Solutions & Use Cases
      • Solutions
      • Use Case Library
    • Markets & Industries
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • DataMiner Insights
      • Security
      • Integration Studio
      • System Architecture
      • DataMiner Releases & Updates
      • DataMiner Apps
    • 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)
    • DataMiner DevOps Professional Program
  • Downloads
  • More
    • Feature Suggestions
    • Climb the leaderboard!
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • >> Go to dataminer.services

SetParameter performance differences

Solved1.72K views5th September 2023QAction SetParameter SLScripting
1
Alex Johnson [SLC] [DevOps Advocate]836 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 Catalyst] Selected answer as best 5th September 2023

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
6
Laurens Moutton [SLC] [DevOps Enabler]8.68K 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 Catalyst] 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 DevOps rank

DevOps Members get more insights on their profile page.

My user earnings

0 Dojo credits

Spend your credits in our swag shop.

0 Reputation points

Boost your reputation, climb the leaderboard.

Promo banner DataMiner DevOps Professiona Program
DataMiner Integration Studio (DIS)
Empower Katas

Recent questions

When using the Setter = true attribute, will the copy action always be executed first? 1 Answer | 1 Vote
Multiple Set on Table parameters for DVE’s 0 Answers | 1 Vote
DOM Definition relations returned in Definition query 0 Answers | 2 Votes

Question Tags

adl2099 (115) alarm (62) Alarm Console (82) alarms (100) alarm template (83) Automation (223) automation scipt (111) Automation script (167) backup (71) Cassandra (180) Connector (109) Correlation (68) Cube (150) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (140) driver (65) DVE (56) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (152) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) services (51) SNMP (86) SRM (337) table (54) trending (87) upgrade (62) Visio (539) Visual Overview (345)
Privacy Policy • Terms & Conditions • Contact

© 2025 Skyline Communications. All rights reserved.

DOJO Q&A widget

Can't find what you need?

? Explore the Q&A DataMiner Docs

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