DiamondLightSource / cothread

Cooperative Python Threads and EPICS Channel Access bindings
Apache License 2.0
12 stars 9 forks source link

Review performance testing #33

Closed ajgdls closed 11 months ago

ajgdls commented 1 year ago

Hello, I've written a small Python module https://github.com/ajgdls/EPICSPyClientPerformance to compare the performance of 6 Python based EPICS clients. I have attempted to test each in a consistent way, and the README has some preliminary results for monitoring 1000 records at 10Hz for 1000 samples.

I would really appreciate it if this module owner would review EPICSPyClientPerformance test code for this client implementation to check that I'm actually testing in the correct and most efficient way. I would be happy to make updates that shows an increase in performance for this client.

This testing is driven by Diamond Light Source, and on 1st December the tests will be re-run against latest PyPI versions and then published (probably tech-talk) for further discussion, so if anyone wants to push performance optimisations they will get picked up on that date.

Thanks for taking a look, looking forward to hearing from everyone.

Araneidae commented 11 months ago

A more vigorous test might be to fetch thousands of PVs simultaneously, though this may more depend on the behaviour of channel access than the library. cothread can fetch tens of thousands of PVs in a few seconds with the following call:

values = caget(list_of_pvs)