【发布时间】:2013-02-16 20:25:40
【问题描述】:
我需要经常将数据从 C++ 传递到 C#。它应该尽可能快,因为我正在编写超低延迟交易应用程序。
我有一个纯C++项目(以后会移植到Linux上)。我需要将数据从它传递到我的 C# 项目。我总是需要传递相同的结构(如果这很重要的话)。
结构如下: Ticker = "MSFT" Price = "30" Volume = "10" Side = "Buy"
我想有两种选择:
- 编写 C++-CLI 包装器,它将 UnmanagedMemoryStream 从 C++ 传递到 C#
- 使用内存映射文件
会是什么:
- 更快
- 更容易实施
- 更容易移植到 Linux ?
【问题讨论】:
-
C++ 和 C# 代码最终在两个独立的进程中,还是在同一个进程中? IE。您是否需要在不同进程之间或通过同一进程内的托管/非托管边界传输数据? '移植到 Linux' = 在 C# 部分使用 Mono?
-
是的,这很重要。我假设有单独的进程。
-
这是同一个项目,是的,我认为它可能是同一个过程。移植到 Linux 很可能是将其余的 C# 代码重写为 C++。然而,单声道也是可能的......并且将我当前的库作为“独立”应用程序可能很酷(如果不会显着影响延迟)。在其他几个进程之间共享
Ticker = "MSFT" Price = "30" Volume = "10" Side = "Buy"会很酷。所以要求很模糊,但延迟肯定是最重要的部分!不过,我同意花 1-10 微秒的时间来提供一些很酷的功能,例如与其他几个进程共享数据。 -
我不是 Linux 专家,但似乎
mmap在 Linux 中的速度非常快。所以我可能需要在 Windows 中使用类似的东西,这样我以后可以轻松地移植它....
标签: c# c++-cli unmanaged-memory map-files