Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize DataDictionary #221

Merged
merged 1 commit into from
Jul 31, 2019
Merged

Conversation

ZaitsevY
Copy link
Contributor

DataDictionary keeps some data in Map<IntStringPair, .V> structures. A new instance of IntStringPair is created every time to search the value in the map. When parsing market data (with a lot of repeating groups) it causes a lot of IntStringPair allocations (see the attached profiler screenshot, taken after ~1000 MarketDataSnapshotFullRefresh messages received).
before
Changing implementation to Map<Integer, Map<String, V>> nested maps allows to get rid of IntStringPair at all. The results are on another screenshot.
after

@chrjohn
Copy link
Member

chrjohn commented Jul 8, 2019

Hi,
thanks for the PR and sorry for the long delay. I will check it during the next days but it seems it has already gotten a review. Thanks @philipwhiuk

Cheers,
Chris.

@philipwhiuk
Copy link
Contributor

I didn't do a detailed review of this - but I've seen DataDictionary be a huge hog when debugging stuff, so I was glad to see work on it. I can't think that we particularly care too much about the internal data structure so given it passed all the existing tests I was happy enough.

@Ines-Gam
Copy link

Ines-Gam commented Jul 11, 2019

Hi,
I'm just a beginner and I need to implement a solution using fix protocol 5.0. I will use quickfix/J but I didn't understand how it works exactly. I read the guidelines but they weren't very clear for me.
Can you please tell me if Data Dictionary is the XML file (fix50.xml) ? Can I add custom fields to this file? And do I need to create a java class for each type of message and for each field ?
I would appreciate your help.
Thank you.

@chrjohn
Copy link
Member

chrjohn commented Jul 12, 2019

Hi @Hazines ,
this is not the correct place for such questions.
A basic introduction is even on the main page of this project https://github.com/quickfix-j/quickfixj or here: https://www.quickfixj.org/usermanual/2.1.0/
For further questions (after checking the documentation), please use the mailing list: https://sourceforge.net/projects/quickfixj/lists/quickfixj-users
Thanks,
Chris.

@chrjohn chrjohn added this to the QFJ 2.2.0 milestone Jul 19, 2019
@Ines-Gam
Copy link

Ines-Gam commented Jul 24, 2019 via email

@chrjohn
Copy link
Member

chrjohn commented Jul 24, 2019

Hi @Hazines , you can subscribe to the mailing list via the link I posted in my former comment:
https://sourceforge.net/projects/quickfixj/lists/quickfixj-users
When you have successfully subscribed to the mailing list you can simply send mails to quickfixj-users@lists.sourceforge.net
Cheers,
Chris.

@chrjohn chrjohn merged commit 591485a into quickfix-j:QFJ_2_1_x Jul 31, 2019
ljagadeesh06 pushed a commit to ljagadeesh06/quickfixj that referenced this pull request Feb 26, 2020
jli8000 pushed a commit to jli8000/quickfixj that referenced this pull request Sep 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants