从我的主c#app开始,我使用Process.Start
方法启动了许多奴隶进程。 (在同一台PC上)
在启动这些从属进程之前,我在 XML文件中序列化一些数据(我有序列化类),这些数据在Process类的参数中传递。
在每个从属进程中,对这些数据进行反序列化并进行计算。对XML进行了新的序列化,以便将结果发送到主进程。
我的应用有效,但性能非常糟糕。 序列化/反序列化操作的时间太长,因为每个XML文件的大小约为1.5 Mo ......
我真的需要高性能才能在主应用和从属进程之间进行简单的通信。
如何轻松修改代码以提高性能? Nb:将来我的主进程将是64位,从站进程为32位。
我听说有些应用允许在RAM中虚拟化硬盘?它存在吗?它是免费的吗?
我听说过WCF,命名管道,内存映射等,但我似乎很难用......?
答案 0 :(得分:2)
内存映射文件(MMF)是最快的方法。但是,正如您所指出的,问题在于序列化而不是转移本身。任何传输都需要序列化,甚至MMF(除了最简单的情况,当你有简单的数据记录,可以在内存中顺序排列)。 XML并不快 - 任何类型的二进制序列化都会更好。
答案 1 :(得分:0)
使用SlimSerializer 从这里: https://github.com/aumcode/nfx/tree/master/Source/NFX/Serialization/Slim
单个线程上的第二个成千上万的序列化事务 - 这是针对"典型的Person"对象(姓名,地址,联系信息,薪水)
胶水专为"胶水"非常有效地共同处理