Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance trend #33

Open
ghost opened this issue Feb 1, 2023 · 1 comment
Open

Performance trend #33

ghost opened this issue Feb 1, 2023 · 1 comment
Assignees
Labels
question Further information is requested

Comments

@ghost
Copy link

ghost commented Feb 1, 2023

Hi, I wish if you could share some trend performance graphs about read/write tags. We are using this library for big amount of PLC data, and we read them on cycle time. At the moment everything is not completely implemented, we are not sure about library stability so we read some datas only when the OnRead event on our service is triggered
Thanks

@fbarresi fbarresi self-assigned this Jul 30, 2023
@fbarresi fbarresi added the question Further information is requested label Jul 30, 2023
@fbarresi
Copy link
Owner

Hi!

Sorry for letting you wait 😭 I've missed out your message, so please apologize my delayed answer.

I really wanted to deliver you a bench mark, but at the end it was resulting dependent on too many other factors and not really on the library.

If you didn't move forward to your next project, please follow up this conversation with me, we can also have a call on this topic because it is very interesting.

Anyway - this is my reply without a benchmark (yet)

Caveat

Regardless what you do: performance in this case is intended about data over the time.
According to my experience, it is almost always a good idea to introduce asynchronous programming in a project: if you still have the chance you probably should evaluate it first.

Limitations (according to me)

If (for whatever reason) you need an high amount of data in short time you will always be dealing with this kind of external limitation (at least)

  • The network: the transmission happens packaged, if your network is not fast enough or you have a drop rate >0 this will slow down the performance.
  • The PLC: the plc has to guarantee a certain cycle time and GET/PUT operation must not interference. If you try to transfer much while the PLC is busy it will let you wait.

My personal experience

According to me, the library itself has a very high throughput limit. If you grant enough resources to your program you should be able to reach at least 10 MB/s or more. I cannot say if it's enough for your scope, but as I wrote, it depends on many things.

Best regards,
FB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant