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

Feature/speed optimizations #88

Open
wants to merge 238 commits into
base: master
Choose a base branch
from
Open

Conversation

staleyLANL
Copy link
Contributor

Might as well put this in.

staleyLANL and others added 30 commits November 1, 2021 22:19
Some files aren't finished yet, and will be uploaded in a few days.
So, this particular update won't build!!

Added broad infrastructure for HDF5 handling...
...Wrapper class
...Assignment operators
...convert() functions
...Constructors
...read() functions
...write() functions
Etc.

Completed many (not all) HDF5 capabilities.
Very basic HDF5 write needs to be smarter (not string-only).
HDF5 reading still needs work.
Touchups are needed here and there throughout the new HDF5 code.
In particular, we need smart, non-string handling.

Small tweaks were made to XML and JSON material, for consistency.
Some comment changes and other odds and ends.
To be used for non-GNDS products, e.g. NDI3.
When ProjectDir is given, namespaces and various other constructs are done differently.
Made miscellaneous small improvements in various other files.
For example: direct read() and write() in Component, aligning with Node's.
So: autogenerated classes have those read()s and write(); there's no need for a user to explicitly go through Node.
This will serve, for now, as a place to store alternative versions of certain classes, for the purpose of avoiding circular class references.
More namespaces, for disambiguation.
Updated generated code.
Changes in some example specs; will help to analyze a JSON-format issue.
Simplified and clarified some of the JSON-related code.
Updated some example/test codes.
It's a convenient way to temporarily "comment out" a child node that's involved in a circular definition (of which the specs have many), until a proper solution is found.
I'm guessing that the specs really shouldn't have both "algorithm" and "hashAlgorithm".
That is, I added a very simple (for now) code that #includes the generated "GNDS 2.0" classes. The code compiles, which is great. However, given the condition of the GNDS 2.0 specs, more work is needed to make this code successfully read and write GNDS 2.0 files.
…nerated classes.

Un-required some things in the spec, where I saw in the the GNDS 2.0 files that the values weren't there (so, obviously, couldn't be required).
Sorting of vectors in Component-derived classes is now optional, and OFF by default. That's really the right thing to do. For GNDS data (which is billed as being order-independent), it may seem convenient to sort vectors of objects according to an index or label metadatum in the object. However, (1) doing so takes time, and (2) we think that by default, at least, the order in which somebody enters such vector elements should be preserved.

Modified a couple of the GNDS 2.0 JSON specs, based on experience with trying to load GNDS 2.0 files.
…efficient.

This includes work in the Core Interface and the Component class, so that queries into Nodes -- to extract objects of prescribed types -- work more efficiently when the objects in question have relatively expensive construction or assignment. This can easily happen with complicated, highly hierarchical generated classes.
…fficient.

Also allowed for additional debug printing in generated classes.
This helps with some efficiency issues.
Some new, alternative query formulations elsewhere allow the T to go.
This other work will be uploaded shortly.
…ave a T.

Removed some constructs elsewhere that were no longer needed.
…ons.

Small changes to a couple of test codes.
Update to the code generator.
Updates to some example/test material.
Via reformulation and extension of some floating-point read/write capabilities.
…rsion.

Used in BlockData::get().
So, relevant for getting vector<floating-point> in Component-derived classes.
@staleyLANL staleyLANL self-assigned this Dec 9, 2022
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.

2 participants