Are Simulink buses performance effective?

8 views (last 30 days)
I have a Simulink program that uses structs, or buses as they are called in Simulink. The Simulink program contains a Matlab function and it's convenient to use structs in that function. The Simulink program uses several buses and some of them are inherited or propagated through in a hierarchy.
Are they any effective, performance-wise? Is it better to store a struct variable in a bus object and call the variable compared to create the variable within the Matlab code?

Accepted Answer

Marcus Jansson
Marcus Jansson on 27 Apr 2017
When I asked the question I didn't know a way to investigate the performance of a Matlab function within a compiled Simulink program. Unfortunately Profiler cannot be used. Though, it was found that "tic toc" can be used.
Made a rough performance analysis, it seems that the structs/buses have some overhead. In my code it's for example 25% faster to call a subfunction that creates a 6x6 matrix from a 6x1 vector each timestep instead of creating it once the first timestep and store it in a bus and just retrieve it each timestep. Heavier operations like matrix inverse or backslash are though better to do once and store the result in a bus.
Consequently, do not rely on buses for optimum performance.

More Answers (1)

KL
KL on 26 Apr 2017
Performance-wise I have never really observed any difference. For one thing, usage of structs/buses makes life easier and especially with simulink when you have too many signals, it makes the disgram look pretty neat and also easier when you use a single scope for multiple variables.

Categories

Find more on Simulink Functions in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!