{"id":24374563,"url":"https://github.com/robaho/cpp_fix_codec","last_synced_at":"2025-09-14T20:56:46.318Z","repository":{"id":272668777,"uuid":"917379172","full_name":"robaho/cpp_fix_codec","owner":"robaho","description":"ultra fast C++ FIX protocol encoder/decoder","archived":false,"fork":false,"pushed_at":"2025-01-25T17:05:22.000Z","size":70,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T18:18:22.194Z","etag":null,"topics":["cpp","fix","fix-protocol","trading"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robaho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-15T21:43:34.000Z","updated_at":"2025-01-25T17:05:26.000Z","dependencies_parsed_at":"2025-01-15T23:45:35.517Z","dependency_job_id":"916cc7c5-0678-492e-aee9-08a7cc6937e0","html_url":"https://github.com/robaho/cpp_fix_codec","commit_stats":null,"previous_names":["robaho/cpp_fix_codec"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp_fix_codec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp_fix_codec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp_fix_codec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp_fix_codec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robaho","download_url":"https://codeload.github.com/robaho/cpp_fix_codec/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243213850,"owners_count":20254879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","fix","fix-protocol","trading"],"created_at":"2025-01-19T05:40:43.400Z","updated_at":"2025-03-12T11:41:27.226Z","avatar_url":"https://github.com/robaho.png","language":"C++","readme":"## Summary\n\nThis is a C++ implementation of a FIX protocol codec.\n\nIt uses [cpp_fixed](https://github.com/robaho/cpp_fixed) to perform fixed decimal point integer math.\n\n## Building\n\nThe project depends on the [cpp_fixed](https://github.com/robaho/cpp_fixed) project. It must be available at the\nsame directory level (change the `INCLUDES` entry in the `Makefile` if it is in a different location).\n\nThe project builds by default using `make` and CLang. There is a `Makefile.gcc` for building using GCC.make\n\n## Design\n\nThe library is extremely low-level, designed for performance first. There is no automated FIX metadata. The\nconsumer is responsible for defining the group layout of the messages it uses.\n\nA custom arena based memory allocator is used, and any dynamic memory is reused when parsing the next message.\n\nNested groups are fully supported.\n\n## Testing\n\nuse `make run_tests` to run all of the test cases.\n\n## Performance\n\nUsing a 4 GHz Quad-Core Intel Core i7:\n\nThe library can parse more than **2.7M messages a second** from a single istream. An istream is almost always required\nbecause the FIX connection is over TCP and the messages are not delineated.\n\nParsing messages with groups slows the parsing by 10%.\n\nAfter parsing, the accessing of fields is performed at more than 55M a second.\n\nThe library can encode more than 4.5M typical \"new order single\" messages per second. With cached time values, this\nis **more than 7.5M messages per second**. Time conversion is typically slow so caching below the required accuracy is essential.\n\nSee the [benchmark parsing](https://github.com/robaho/cpp_fix_codec/blob/main/benchmark_parse_test.cpp)\u003cbr\u003e\nSee the [benchmark building](https://github.com/robaho/cpp_fix_codec/blob/main/benchmark_build_test.cpp)\n\n\u003cdetails\u003e\n    \u003csummary\u003eperformance details\u003c/summary\u003e\n\n\u003cpre\u003e\nNew Order Single: parsed 1000000 messages, usec per order 0.368897, orders per sec 2710783\nNew Order Single w/Groups: parsed 1000000 messages, usec per order 0.496595, orders per sec 2013713\nbuilt 10000000 messages, usec per msg 0.223333, msgs per sec 4477614\nwith cached time, built 10000000 messages, usec per msg 0.133145, msgs per sec 7510597\n\u003c/pre\u003e\n\n\u003c/details\u003e\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaho%2Fcpp_fix_codec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobaho%2Fcpp_fix_codec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaho%2Fcpp_fix_codec/lists"}