Is ACE (C++ library) still used for high performance computing?
Asked Answered
C

3

6

Being interested in high frequency trading/High performance computing I came across 'ACE':

http://www.cs.wustl.edu/~schmidt/ACE-overview.html

However, I noticed a lot of the papers on the website are from 1995 era and I wondered is this framework still used and if not, what was it's replacement?

Or has boost replaced this? Does ACE contain desired libraries that boost doesnt?

Chaoan answered 3/12, 2011 at 14:56 Comment(1)
Why is this tagged as c, boost and tcp ???Deutoplasm
S
4

If you have a look at their subversion repository, it does not seem that ACE is undergoing much development nowadays, possibly just bug fixing or minor extensions. On the other hand, ACE is the foundations of other frameworks by the same group that indeed are more active. Anyway, the discussion forum shows relevant activity and constant interest in ACE.

As to your question about ACE vs. boost, I don't think that the two libraries are on a par. ACE is aimed at enabling cross-platform advanced networking (even on real-time and embedded systems), offering specific patterns like reactor, service configurator, completion tokens, memory management and so on. The "portability" layer (ACEOS, if I am not wrong) is just a basic layer, but it is not, in my opinion, the real value proposition of ACE nowadays, rather it is there to enable the other subsystems.

Overall, I think that for advanced networking patterns, like those described in POSA2, ACE is a good choice. If you need just an abstraction layer over the OS, boost is the way to go (more modern and widely adopted).

Shanelleshaner answered 3/12, 2011 at 15:16 Comment(2)
I'm not sure if I want "advanced networking patterns", but I just want to try and get familiar with the current frameworks that people developing high frequency trading systems would know. Do you have any suggestions for latency frameworks/technologies I could go and learn?Chaoan
I am sorry, but I worked with ACE on embedded real time system several years ago, then moved to different application domains, so I really don't know what is the best today in the field.Shanelleshaner
P
1

I know it is a old post but for those who want to know ACE is still in development :

https://github.com/DOCGroup/ATCD/tree/master/ACE

Personality answered 8/5, 2015 at 9:21 Comment(0)
M
0

While ACE has created interest a long time ago, more recent server designs offer higher speed (lower latency) and multi-core scalability (higher concurrency).

If you are concerned about latency (high-frequency trading operators fight for every microsecond), then do your own benchmarks. The weighttp (ApacheBench compatible) stress tool is the most efficient I have seen (use the "-t 4" option to use 4 worker threads instead of a 4-second test like for AB).

Since Apachebench is a single-thread tool, it will not be able to saturate a SMP server (either muti-thread or multi-process).

Moazami answered 3/12, 2011 at 15:37 Comment(4)
Could you elaborate on "more recent server designs"? What libraries/frameworks would you recommend getting familiar with, with regards to latency networking/programming?Chaoan
You will find the broadest server comparisons that I know about hereMoazami
Higher concurrency generally implies higher latency because you introduce overhead due to communication between threads. The most latency sensitive apps still tend to be single-threaded, and tend to scale processes across cores rather than use any sort of threading model.Crenshaw
Multicore systems allow "true" parallelism (as opposed to processes or threads sharing one CPU by getting time slices provided by the OS' task scheduler). Therefore, properly designed multicore programs can achieve a much lower latency then single-threaded applications.Moazami

© 2022 - 2024 — McMap. All rights reserved.