C++ Fix Engine

AIM Systems - Fix Solution

FIX Engine: Latency & Performance

Performance and full FIX compliance are distinguishing features.  Following are detailed performance analysis with descriptions. We have tried to provide maximum details for performance / latency statistics and would be glad to answer any questions.

 

Performance Results (Time is in Nano Seconds)
Description
Message Size (Bytes)

Tags #

(Header, Body,Trailer)

Latency

(nano-sec)

Latency / tag

(nano-sec)

Messages/Sec
Decoding 100 10(5+4+1) 203 20 4,926,108
Decoding 160 15(6+8+1) 302 20 3,311,258
Encoding 100 10(5+4+1) 320 32 3,125,000
Encoding 160 15(6+8+1) 487 32 2,053,388

**GatewayMode

Decode+Check+Encode

100 10(5+4+1) 309 * 3,236,246

GatewayMode

Decode+Check+Encode

160 15(6+8+1) 443 * 2,257,336

Message Count for each Iteration: 10,000,000

For Gateway mode, 4 Fields were check for Risk. Please refer code for deatils.

**Gateway Flag enabled: All checkes are performaned in read-only mode, without any enrichment.

De-Serialization - From byte array to FIX Object

  • Sample shows performance to convert std::string or byte array to FIX Message Object
  • Time includes enriching message with all Field Tags, with numeric ID and value
  • No delayed parsing or ID conversion
  • All field are populated in respective Header, Body or Trailer

Serialization - From FIX Object to byte array

  • Rebuild String object from all Field.
  • Checksum can be optionally enabled which takes under 50 nano-seconds, disabled in above test

Environment

      Operating System: CentOS Linux X64, version 6.4
      Memory: 32 GB
      CPU: 3.2 Ghz, I7-3930   
      Overclocking - NONE
      GCC/ G++  version: 4.8.2
      GLIBC:  x.x
      

 

Sample Messages used in performance testing - NewOrderSingle

    100 Byte Message
    8=FIX.4.4|9=86|35=D|49=TEST_INSTANCE1|56=aimsGateway|38=100|44=3000|55=AIMS.L|11=137386_1|10=000|
    160 Byte Message
    8=FIX.4.4|9=146|35=D|52=20131112-22:36:26.646|49=TEST_INSTANCE1|56=aimsGateway|54=1|40=2|
    60=20131112-2:36:26|38=100|59=3|44=3000|55=AIMS.L|11=137386_1|10=000|    
    

 

Performance comparison with other Open-source implementations

 

Latency AIMS FIX

(nano-sec)

Latency Quick FIX

(nano-sec)

Decoding Time Per Message (98 bytes) 203 4570
Encoding Time Per Message ( 98 bytes) 320 13,650

Performance Code

Sample Performance Code used for testing

Summary

  • Serialization / deserialization per tag is consistent irrespective of message size.
  • aimsFIX library outperform known open-source by huge magnitude
  • Under Gateway mode, it gives best performance, under 300 nano-sec