【问题标题】:memory mapping files for high frequency trading?高频交易的内存映射文件?
【发布时间】:2015-05-22 06:48:31
【问题描述】:

我正在为 C++ 股票的高频交易客户工作。我正在使用 quickfix/J 库从我的经纪人那里接收信息。我需要这两个进程进行通信(一个用 Java 编写,另一个用 C++ 编写),并且必须尽可能减少延迟。

起初我考虑使用 FIFO 命名管道,但我正在阅读有关内存映射以及如何通过将文件映射到内存来提高性能的内容。我的问题是......它真的那么快吗?实现这一目标的最佳方法是什么?我应该映射一个常规的文本文件吗?即使使用内存映射,使用常规文本文件不会很慢吗?

提前致谢。

【问题讨论】:

    标签: ipc mmap quickfix fix-protocol memory-mapping


    【解决方案1】:

    内存映射非常快,它为您提供了一个机器人进程可以访问的区域。

    出现的问题是:进程如何知道数据已更改?您可以添加一种随着数据变化而增加的版本号,但是由于跨进程(信号量)的所有额外锁定,我不相信数据传输会那么快。

    所以我认为,对于数据传输而言,与命名管道或队列相比,整体性能不会那么好。

    【讨论】:

    • 有没有办法使用内存映射和管道?就像映射命名管道而不是使用文本文件进行映射?或者它不会有那么大的不同?
    • 你可以在同一个过程中使用它们——但这不是你的意思。据我所知,没有直接的方法可以做到这一点。您可以通过在共享内存中分配数据块并通过管道发送偏移量 + 长度来手动执行此操作 - 但话又说回来,您可以通过管道发送。您是否查看过消息队列?我通过使用 unix 消息队列解决了类似的要求。
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2010-11-01
    • 2011-05-14
    相关资源
    最近更新 更多