单身的静态成员与静态本地成员对本地成员

时间:2014-02-11 08:06:27

标签: c# .net static

我有一个单独的静态类,其中包含设置Settings.Instance.MemberName 此类位于包含多个项目的解决方案中的GlobalSettings项目中。

所有项目都编译为DLL并由外部Windows服务进程使用 在此解决方案的一个项目中,我有100-200个ClassA实例,此类用于使用网络套接字从设备轮询数据。
轮询使用某些逻辑完成,我使用Settings.Instance中的设置, 例如,设置是轮询之间的休眠时间。

socket.Send(..);
Thread.Sleep(Settings.Instance.SleepBetweenSendAndReceive);
socket.Receive(..);

我的问题是,做什么更好?

  1. 所有实例都应直接调用Settings.Instance.MaxNetworkRetries,如上所示。

  2. 在ClassA构造函数中,我应该将所有设置加载到本地静态私有成员

      

    (Thread.Sleep(_sleepBetweenSendAndReceive);)

  3. 在ClassA构造函数中,我应该将所有设置加载到本地私有成员

      

    (Thread.Sleep(_sleepBetweenSendAndReceive);)

  4. 什么能带来最佳表现?或者也许没有任何区别。

1 个答案:

答案 0 :(得分:2)

如果您想要做的只是Sleep(),我无法想象那里有任何性能问题。

当涉及网络通信时,网络通常是瓶颈,并且可以忽略属性调用的开销。

如果您想提高应用程序的效果,可以删除Sleep(),然后屏蔽Receive()或异步接收数据(如果您不确定是否已经过了要接收数据。)

但最后,访问同一个类中的字段应该比静态类的属性更快。您可以编写一个没有网络通信的示例项目,并计算时差。