Low latency programming

前端 未结 12 1420
梦谈多话
梦谈多话 2021-01-29 18:07

I\'ve been reading a lot about low latency financial systems (especially since the famous case of corporate espionage) and the idea of low latency systems has been in my mind ev

相关标签:
12条回答
  • 2021-01-29 18:08

    If I remember correctly real time Java (RTSJ) is used in this area, though I couldn't find a good article to link to now.

    0 讨论(0)
  • 2021-01-29 18:09

    Typically, work in low-latency environments means having an understanding of call dependencies and how to reduce them to minimize the dependency chain. This includes the use of data structures and libraries to store desired cacheable data as well as refactoring existing resources to reduce interdependencies.

    0 讨论(0)
  • 2021-01-29 18:15

    I work for a financial company that produces low latency software for communication directly with exchanges (for submitting trades and streaming prices). We currently develop primarily in Java. Whilst the low latency side isn't an area I work in directly I have a fair idea of the skillset required, which would include the following in my opinion:

    • Detailed knowledge of the Java memory model and techniques to avoid unnecessary garbage collection (e.g. object pooling). Some of the techniques used might typically be regarded as "anti-patterns" in a traditional OO-environment.
    • Detailed knowledge of TCP/IP and UDP multicast including utilities for debugging and measuring latency (e.g. DTrace on Solaris).
    • Experience with profiling applications.
    • Knowledge of the java.nio package, experience developing NIO-based scalable server applications, experience designing wire protocols. Also note that we typically avoid using frameworks and external libraries (e.g. Google Protobuf), preferring to write a lot of bespoke code.
    • Knowledge of FIX and commercial FIX libraries (e.g. Cameron FIX).

    Unfortunately many of the skills can only be developed "on the job" as there's no substitute for the experience gained implementing a price server or trading engine based on a spec. from an exchange or vendor. However, it's also worth mentioning that our company at least tend not to look for specific experience in this (or other) niche areas, instead preferring to hire people with good analytical and problem solving skills.

    0 讨论(0)
  • 2021-01-29 18:16

    Anything on realtime programming would fit the bill. It's not precisely what you're after, I suspect, but it's an extremely good place to start.

    0 讨论(0)
  • 2021-01-29 18:19

    I would like to give some comments about Low Latency Programming. Currently I have more than 5 years of experience in developing low latency and high execution engines in financial software.

    Is it necessary to understand what is latency?

    Latency means it needs time to complete your process. It does not necessarily depend on the development tools you are using, like java,c++,.net etc., it depends on your programming skills, and system.

    Suppose you are using java but one mistake by you can make a delay in process. For example you have developed a trading application in which on every price refresh you call some functions and so on. This can result in extra variables, unnecessary memory use, unnecessary loops which may cause delay in process. Same application developed in .net may perform better than the java if the developer cared about the above mistakes.

    It also depends on your server system, like multi processor system may perform well if your application is multithreaded.

    0 讨论(0)
  • 2021-01-29 18:22

    If you are speaking about low latency server design, these are some good pointers: http://www.kegel.com/c10k.html http://pl.atyp.us/content/tech/servers.html

    0 讨论(0)
提交回复
热议问题