summaryrefslogtreecommitdiff
path: root/IvyPerf/IvyPerf.cs
diff options
context:
space:
mode:
Diffstat (limited to 'IvyPerf/IvyPerf.cs')
-rw-r--r--IvyPerf/IvyPerf.cs49
1 files changed, 44 insertions, 5 deletions
diff --git a/IvyPerf/IvyPerf.cs b/IvyPerf/IvyPerf.cs
index 25afd6a..794ffd8 100644
--- a/IvyPerf/IvyPerf.cs
+++ b/IvyPerf/IvyPerf.cs
@@ -14,7 +14,15 @@ namespace IvyPerf
{
static Ivy bus;
static double origin = 0;
-
+ static int nbMsgReceive = 0;
+ static int nbMsgEmit = 0;
+ static int nbMsg = 10;
+
+
+ static double minRoundTrip = 1e12;
+ static double maxRoundTrip = 0;
+ static double averageRoundTrip = 0;
+
static double currentTime() // en ms
{
double time;
@@ -30,13 +38,33 @@ namespace IvyPerf
[IvyBinding("^pong ts=(.*) tr=(.*)")]
static void Pong(object sender, IvyMessageEventArgs args)
{
+ nbMsgReceive++;
+
double current = currentTime() - origin;
double ts = double.Parse(args[0], bus.Culture );
double tr = double.Parse(args[1], bus.Culture );
double roundtrip1 = tr - ts;
double roundtrip2 = current - tr;
double roundtrip3 = current - ts;
- Console.WriteLine("round trip {0} {1} {2}", roundtrip1, roundtrip2, roundtrip3);
+
+ if (roundtrip3 > 50)
+ Console.WriteLine("slow roundtrip[{0}] min {1} av {2} max {3} ms slow={4}", nbMsgReceive, minRoundTrip, averageRoundTrip, maxRoundTrip, roundtrip3);
+
+ if (roundtrip3 > maxRoundTrip)
+ {
+ maxRoundTrip = roundtrip3;
+ }
+ if ( roundtrip3 < minRoundTrip )
+ {
+ minRoundTrip = roundtrip3;
+ }
+ averageRoundTrip = (averageRoundTrip * ( nbMsgReceive - 1 ) + roundtrip3) /nbMsgReceive;
+
+ if ( nbMsg == nbMsgReceive )
+ {
+ Console.WriteLine("roundtrip[{0}] min {1} av {2} max {3} ms\n", nbMsgReceive, minRoundTrip, averageRoundTrip, maxRoundTrip);
+ //bus->Stop();
+ }
}
/// <summary>
/// Point d'entrée principal de l'application.
@@ -44,9 +72,12 @@ namespace IvyPerf
[STAThread]
static void Main(string[] args)
{
- int timeout = 1000;
+ int timeout = 200;
if (args.Length > 0)
timeout = int.Parse(args[0]);
+ if (args.Length > 1)
+ nbMsg = int.Parse(args[1]);
+
bus = new Ivy("IvyPerf", "IvyPref ready");
bus.SentMessageFilter.Add("ping");
bus.SentMessageFilter.Add("pong");
@@ -56,11 +87,19 @@ namespace IvyPerf
//bus.BindMsg("test", testtarget);
bus.Start(null);
origin = currentTime();
- while( true )
+ Console.WriteLine("Start Sending {0} messages...", nbMsg);
+ while( true )
{
Thread.Sleep( timeout );
int count = bus.SendMsg("ping ts={0}", currentTime() - origin );
- if ( count == 0 ) Console.Write( "." );
+ if (count != 0) nbMsgEmit++;
+ if (nbMsg == nbMsgEmit)
+ {
+ Console.WriteLine("... {0} messages sent ", nbMsg);
+ Thread.Sleep(timeout);
+ break;
+ }
+
}
}