1

我有一个 Delphi 应用程序,它产生一个数据块,我目前正在将其作为 xml 写入文件系统。然后,此数据由 C# .Net 应用程序读入以进行进一步处理。

问题是对象图很大,生成的 xml 文件大小为 2 GB+。xml文件的写入和读取都需要较长的时间。

除了写入文件系统,我怎样才能将数据传输到 RAM 中更快的地方?

我有两个应用程序的源代码和编译器。我正在为一个应用程序使用 .Net 4.0 版和 VS2010。另一个我正在使用 Delphi 5(我可以访问更高版本,但我不确定迁移是否会有所帮助)。

更新:感谢所有建议,需要处理很多。我会在进一步审查后回复。

4

5 回答 5

6

还有一些建议:

内存映射文件

命名管道

插座

RPC

活动X

我个人的建议是套接字,在 Delphi 端使用Indy ,在 .NET 端使用System.Net.Sockets

于 2012-10-04T21:07:46.330 回答
3

您可以将两者集成到一个进程中。这将为您带来速度优势,因为您不需要任何进程间通信。

三种方法可以做到这一点:

如果您使用 Delphi XE2 或更高版本执行此操作,您可以将所有内容都放在一个 64 位进程中,并且更容易分配 2GB 以上的内存。

于 2012-10-04T17:05:12.717 回答
2

您可以通过在将 XML 流写入磁盘时对其进行压缩(gzip 等)然后在另一端解压缩来显着加快这一速度。如果您的尺寸减少了 10 倍,因此 I/O 减少了 10 倍,请不要感到惊讶。当然,您正在用 I/O 来换取 CPU 工作,但对于 CPU 来说这相对容易。

于 2012-10-04T21:36:48.203 回答
1

您可以将其作为 SOAP 消息发送。

于 2012-10-04T21:32:24.893 回答
0

最好的方法,我现在使用它以 30fps 将图像从 c# 传输到 delphi 是:


1- 在创建 ac# COM LIBRARY(暴露 GUI 元素)中
2- 使用 regasm -register -tlb dllname.dll 注册 ac# COM LIBRARY
3- 加载在 delphi 中创建的类型库并使用 c# 函数发送您检索任何数据

于 2013-08-21T17:47:29.180 回答