I recently finished switching over my proton-c programs psend & precv to the new event-based interface, and my first test of them was a 5 billion message soak test.
The programs survived this test with no memory growth, and no gradual slowdown. This test is meant to find the fastest possible speed of the proton-c code itself. (In future, we could make other similar tests designed to mimic realistic user scenarios.) In this test, I run both sender and receiver on one box, with the loopback interface. I have MTU == 64K, I use a credit scheme of 600 initial credits, and 300 new credits whenever credit falls below 300. The messages are small: exactly 100 bytes long. I am using two processors, both Intel Xeon E5420 @ 2.50GHz with 6144 KB cache. (Letting the OS decide which processors to use for my two processes.) On that system, with the above credit scheme, the test is sustaining throughput of 408,500 messages per second . That's over a single link, between two singly-threaded processes. This is significantly faster than my previous, non-event-based code, and I find the code *much* easier to understand. This may still not be the maximum possible speed on my box. It looks like the limiting factor will be the receiver, and right now it is using only 74% of its CPU -- so if we could get it to use 100% we *might* see a performance gain to the neighborhood of 550,000 messages per second. But I have not been able to get closer to 100% just by fooling with the credit scheme. Hmm. If you'd like to take a look, the code is here: https://github.com/mick-goulish/proton_c_clients.git
