Table of Contents |
---|
Simple Performance Test
In the test modules for IMC a few stopwatches are included to be able to time Command and DataReady calls. The result is written directly in the module output window.
...
Get Coupler Codes and Clear Curve Commands has Stopwatch included in the IMCClient.
All tests have been performed on a developer PC
...
Dataready(String[]) and Request new Target has Stopwatch in the IMCServer.
...
Stress test
To simulate live data from a REM module via DataReady the button Start Measurement in the IMCClient samples will send a command to the IMCServer that will as fast as possible in separate thread send 100 curves one by one where all measurement points are filled out. The time each call takes is logged in the IMCServer output window. Average time for call in calculated and written.
Performance result on a fast developer PC
...
Simple Performance Test Results
...
Comments:
Inc drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
The following factors make the REST interface slower especially Command. In previous the .NET 4 implementation, there is a direct connection between IMC Client and Server which make every call happen at once.
In the REST implementation the following happens in Command.
Module The module makes an object (e.g. IMC command object) with data and sends a Command.
The Proxy REST API first serialize the data object (the module process) when it leaves the module and then de-serializes it back to an object in the proxy itself. (The proxy process)
Then the data object is send sent through a direct connection form one proxy (IMCClient) instance to another (IMCServer) like previous IMC connection in Noah 4. This happens at once.
...
The is only to times Serialize/De-serialize.
Recommendation:
Seen from a performance perspective its it's recommended to use Command only to “activate“ the IMCServer and tell it what it should do. Don't use it to get a lot of Data.
We recommend that DataReady is used to send the actual data.
Stress test
Stress Test Setup - To simulate live data from a REM module
The IMCClient samples will send a command (Button Start Measurement) to the IMCServer. The IMCServer will respond with DataReady with 100 curves where all measurement points are filled out. The curves will be sent in a separate thread, one by one as fast as possible. The time each call takes is logged in the IMCServer output window. The average time for calls is also shown in the output. The Average time for 100 curves in our test was 12 ms per curve.
Stress Test Results
...