public void Performance_DisableNonKeyExchangeMessages()
{
const int runCount = 1000000;
_sshMessageFactory.EnableAndActivateMessage("SSH_MSG_USERAUTH_BANNER");
_sshMessageFactory.EnableAndActivateMessage("SSH_MSG_DEBUG");
_sshMessageFactory.EnableAndActivateMessage("SSH_MSG_UNIMPLEMENTED");
_sshMessageFactory.EnableAndActivateMessage("SSH_MSG_SERVICE_ACCEPT");
_sshMessageFactoryOriginal.EnableAndActivateMessage("SSH_MSG_USERAUTH_BANNER");
_sshMessageFactoryOriginal.EnableAndActivateMessage("SSH_MSG_DEBUG");
_sshMessageFactoryOriginal.EnableAndActivateMessage("SSH_MSG_UNIMPLEMENTED");
_sshMessageFactoryOriginal.EnableAndActivateMessage("SSH_MSG_SERVICE_ACCEPT");
// warm-up
for (var i = 0; i < 3; i++)
{
_sshMessageFactory.DisableNonKeyExchangeMessages();
_sshMessageFactory.EnableActivatedMessages();
_sshMessageFactoryOriginal.DisableNonKeyExchangeMessages();
_sshMessageFactoryOriginal.EnableActivatedMessages();
}
//Console.WriteLine("Starting test");
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
var stopwatch = new Stopwatch();
stopwatch.Start();
for (var i = 0; i < runCount; i++)
{
_sshMessageFactory.DisableNonKeyExchangeMessages();
_sshMessageFactory.EnableActivatedMessages();
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
stopwatch.Start();
for (var i = 0; i < runCount; i++)
{
_sshMessageFactoryOriginal.DisableNonKeyExchangeMessages();
_sshMessageFactoryOriginal.EnableActivatedMessages();
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}