MessageBenchmarks.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using BenchmarkDotNet.Attributes;
  2. using Renci.SshNet.Common;
  3. using Renci.SshNet.Messages;
  4. using Renci.SshNet.Messages.Transport;
  5. namespace Renci.SshNet.Benchmarks.Messages
  6. {
  7. [MemoryDiagnoser]
  8. public class MessageBenchmarks
  9. {
  10. [Benchmark]
  11. public Message WriteBytes()
  12. {
  13. using var sshDataStream = new SshDataStream(SshData.DefaultCapacity);
  14. var bannerMessage = new WritableDisconnectMessage(DisconnectReason.ServiceNotAvailable, "Goodbye");
  15. bannerMessage.WritePrivateBytes(sshDataStream);
  16. return bannerMessage; // Avoid JIT elimination
  17. }
  18. private sealed class WritableDisconnectMessage : DisconnectMessage
  19. {
  20. public WritableDisconnectMessage(DisconnectReason reasonCode, string message)
  21. : base(reasonCode, message)
  22. {
  23. }
  24. public void WritePrivateBytes(SshDataStream sshDataStream)
  25. {
  26. WriteBytes(sshDataStream);
  27. }
  28. }
  29. }
  30. }