我有一个单独的静态类,其中包含设置Settings.Instance.MemberName
此类位于包含多个项目的解决方案中的GlobalSettings项目中。
所有项目都编译为DLL并由外部Windows服务进程使用
在此解决方案的一个项目中,我有100-200个ClassA
实例,此类用于使用网络套接字从设备轮询数据。
轮询使用某些逻辑完成,我使用Settings.Instance
中的设置,
例如,设置是轮询之间的休眠时间。
socket.Send(..);
Thread.Sleep(Settings.Instance.SleepBetweenSendAndReceive);
socket.Receive(..);
我的问题是,做什么更好?
所有实例都应直接调用Settings.Instance.MaxNetworkRetries,如上所示。
在ClassA构造函数中,我应该将所有设置加载到本地静态私有成员
(Thread.Sleep(_sleepBetweenSendAndReceive);)
在ClassA构造函数中,我应该将所有设置加载到本地私有成员
(Thread.Sleep(_sleepBetweenSendAndReceive);)
什么能带来最佳表现?或者也许没有任何区别。
答案 0 :(得分:2)
如果您想要做的只是Sleep()
,我无法想象那里有任何性能问题。
当涉及网络通信时,网络通常是瓶颈,并且可以忽略属性调用的开销。
如果您想提高应用程序的效果,可以删除Sleep()
,然后屏蔽Receive()
或异步接收数据(如果您不确定是否已经过了要接收数据。)
但最后,访问同一个类中的字段应该比静态类的属性更快。您可以编写一个没有网络通信的示例项目,并计算时差。