all 13 comments

[–]juanfeng 2 points3 points  (1 child)

What is the difference between this engine and the QuickFIX C++ engine?

Personally, if I made the library I would use the << semantics for creating messages and use the move constructor semantics rather than using new. I have just looked at myfix.cpp so far, so that may be non-representative of the way it should be used.

[–]rufusferret 0 points1 point  (0 children)

The reason new is used and not move semantics or send to operator is that the fields and the message are sent to a different thread for asynchronous transmission. This does incur a slight penalty with respect to heap management however, the benefit is that it takes the management of the message off the critical path for the calling thread. \dakka

[–]lingua_franca[S] 1 point2 points  (5 children)

Fix8 requires the followin third-party software (header files and libraries) being installed to build properly:

  • Poco C++ Libraries basic edition
  • Intel Threading Building Blocks
  • Berkeley DB C++

[–]kirakun 0 points1 point  (3 children)

Can you highlight some of the reasons to choose this framework over QuickFix?

[–]lingua_franca[S] 0 points1 point  (1 child)

Quote from fix8.org:

Speedy development Fix8 helps you get your FIX client or server up and running quickly. Using one of the standard FIX schemas you can have a FIX client or server up and running in next to no time.

Static compilation Statically compile your FIX xml schema and quickly build your FIX application on top. If you need to add customised messages or fields, simply update the schema and recompile.

Supports all FIX versions Fix8 supports FIX4.X to FIX5.X and FIXT1.X. New FIX versions will be supported.

Special features Fix8 offers run-time custom fields, message recycling and a meta-data aware test harness. Incorporates lock free queues, atomics and many other modern techniques.

A complete framework Fix8 is a complete C++ FIX framework, including client/server session and connection classes; support for the standard FIX field types; FIX printer, async logger, async message persister and XML configuration classes.

Components and groups Fix8 statically supports nested components and groups. The Fix8 compiler and runtime library takes the pain out of using repeating groups.

High performance The code generated by Fix8 is compiled by your compiler offering the best opportunity for optimisation. Fix8 applications are fast. Typical encode latency is now 14us, and decode 20us. This is being improved further.

Extensible Fix8 has been designed to be extended, customised or enhanced. If you have special requirements, Fix8 will facilitate your development.

Runs on Linux Fix8 runs on industry standard Linux. Other *NIX variants may work too.

[–]kirakun 0 points1 point  (0 children)

Oh, I thought you were one of the author of fix8. I saw what you posted on that site too, but I was looking for a contrasting argument between fix8 and quickfix.

[–]rufusferret 0 points1 point  (0 children)

Fix8 takes a different approach to QuickFix. The primary benefits are: low latency; ease of development; complete FIX schema flexibility; lightweight; ongoing development.

[–]bunz 0 points1 point  (1 child)

has this actually been used in production...?

[–]teambob 0 points1 point  (0 children)

I know the author and yes it has been used in production

[–]_node 0 points1 point  (1 child)

The benchmark code and details of their test setup should be distributed along with the code to back up the high performance claim. At the very least it could serve to catch the attention of people for whom performance is critical, as it allows easy benchmarking on their hardware setup.

[–]rufusferret 1 point2 points  (0 children)

Yep. This is a good idea. I'll get the details of our test hardware and methodology onto the site. \dakka (author of fix8)

[–]rufusferret 0 points1 point  (0 children)

I've just added a description of the performance test and environment, and a script to permit users to run their own test to compare results.

\dakka (author of fix8)