解决方案 »
- 这句格式不正确,怎么改??谢谢各位大手指点
- 线程程序如何将指定线程绑定到指定的CUP上
- 串口通讯
- 求答,form自定义用户控件,在属性编辑器中调用不到控件的属性name值
- 大家不要装MS的EXPRESS中文版的VS2005,它用MS自带的卸载工具删不掉,你要装RTM版是不行的??
- 新手问题,WebForm里按页码时DataGrid会不会自动更新数据?
- C#调用telnet
- 如何使用父对象,创建一个子对象?
- C#中在System.Windows.Forms.DataGrid中怎么隐藏列
- 请推荐C#网络编程(DNS、TCP、SOCKET、UDP等)方面的书
- wpf 动态添加控件
- C# 如何设置DEV控件的gridview 某个单元格的字体颜色
(2)优化存储,包括异步读写、缓存、优化数据结构等等。工业实时数据库的设计是很高的知识产权。往往人家按照点数授权,1000点的报价都在几千美金以上,你应该和你的公司谈一个合理的价格,如果你就拿点工资就帮它搞定了,你亏大了。
5M的数据(Bety[])有优化解析方案?
就我接触过的协议数据解析一般都是O(n)的,如果有大量new操作应该使用对象池。
1.如果真的是每次都从PLC发5M数据过来,那建个发送缓冲区队列。 好比水库口出水量很大但河流(Socket发送的或接收的最大数)很小。那怎么办呢。
那就在水库出口再建个蓄水区(这个可能有N大)把水库出来的水先放到这个蓄水区里,然后按量发河流。同样在接收流水的另一端,也要做这个蓄水区 然后再把蓄好的水进行业务处理当然你为了加快传输速度,那就把转输的数据进行压缩后,再发过去,然后对方接收到后,对数据进行解压。。不过这法子可能会在压缩上耗时间,所以你自己要视情况选择。。
楼主的CPU如果跟不上业务,就算把数据缓冲起来,内存数据只会越来越多,而且不实时,直到奔溃。除非楼主的服务器有大量的空闲期,能够在空闲期消耗掉这些数据。
另外如果CPU资源本来就紧张,不应该启用压缩,压缩只会让CPU更紧张。
当然前提是多线程并发处理。
这种情况,不应该使用流水线,直接使用多线程一个线程处理一个数据就可以了。
你可以看到每一个数据处理的起始时间与结束时间并不会因为流水线而变得更好,流水线仅仅是让程序更复杂了,而且增加了线程同步代价。流水线适应于IO与CPU交错的情况,比如楼主问题中的 网络与解析,这两个阶段就可以使用流水线技术。
1.如果真的是每次都从PLC发5M数据过来,那建个发送缓冲区队列。 好比水库口出水量很大但河流(Socket发送的或接收的最大数)很小。那怎么办呢。
那就在水库出口再建个蓄水区(这个可能有N大)把水库出来的水先放到这个蓄水区里,然后按量发河流。同样在接收流水的另一端,也要做这个蓄水区 然后再把蓄好的水进行业务处理当然你为了加快传输速度,那就把转输的数据进行压缩后,再发过去,然后对方接收到后,对数据进行解压。。不过这法子可能会在压缩上耗时间,所以你自己要视情况选择。。压缩解压这中间消耗的时间可能无法接受,我想这种方法能够测试的。谢谢!
目前的环境好像是 一个PLC接很多生产线上的设备,然后PLC有生产线上的所有数据,而我们的系统连上PLC,读他的DB块,需要实时监控设备状态在加以控制。 现在卡在得到DB块数据之后的解析上。用多线程拆分数据,这样会提高速度?