-
Notifications
You must be signed in to change notification settings - Fork 93
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
Build time improvements #1263
Build time improvements #1263
Conversation
At this moment:
Note also that now In the future, it would be good if the code was not merging functionality and protobuf data/reflection. It usually can be done through functions/types knowing both the non-protobuf and the protobuf data types and doing the bridge work. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're moving things around anyways, why don't we move these functions into their own cpp?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you call "these functions" exactly?
I did plan a step where I move inlined functions in cpps, although it took me a while just to make this thing build XD
If you meant the protobuf-related functions, the issue is that a lot of these functions are member functions, so it's not trivial work to just move them, but yes I think I'll be forced to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh ok you pointed the whole header, I didnt realize as it was not clear in the github discussion.
I'll try to move what I can in the cpp although now this header is not costing too much in the build time at the moment so I decided to do that after I'm done with memory_segment.hpp
. TLDR: wait for it 👍🏽
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In incoming commits I moved the functions which could be in the cpp, but IndexDescriptor
cannot be moved in there unfortunately, it's used in a lot of other files. It's also explciitly exposing protobuf types so as long as it's the case it's impossible to remove that include to protobuf types :/
0e7079b
to
3a77e0f
Compare
3a77e0f
to
f400a17
Compare
I had to remove most of my changes in |
f400a17
to
5e72db3
Compare
Snappy is used in rapidcheck. You can either unload rapidcheck project or go and manually set MTd flags to project related to that. |
3411908
to
ed05ed0
Compare
I still have more changes ongoing but I think to avoid future conflicts this could be merged. So I guess it's time to review 👍🏽 my other changes relies on these ones. |
674974a
to
d75cec8
Compare
@Klaim can you post some data on the wall-clock time improvements? Both locally and on the CI? I'm running some little tests, but would be good to know what you've found too. |
On the CI unfortunately I'm dependent on master not failing, but otherwise ok I'll setup a comparison. |
d75cec8
to
bb30880
Compare
@alexowens90 The CI is too unreliable to make comparisons unfortunately so not sure what to do about that. I made some local build-insights records yesterday to get a better picture, here is the raw data (you can open it on windows in either Visual Studio or using Windows Performance Analyzer, I focused on the VS part below): https://drive.google.com/file/d/1Vo_TgO9mNRYaq4AOKwwR4s7p-ntO4HDL/view?usp=sharing This is captured on a machine using Windows 11, VS 17.9.0-preview5, vcpkg, cmake preset "windows-vs-2022", 6 jobs set in cmake but the machine has 24 logical cores, AMD Ryzen 9 5900X 12 real cores and 32GO of RAM. I stopped using the computer once the builds were launched although some other programs where running. Here is one of the samples from master in Release when open in VS, see the annotation about Here is another sample from this PR branch in Release, see the annotation for the same file: My interpretation:
While doing this and thinking about the discussions about C++20 one thing I kept thinking is that it might be far more worth our time to just make a modularized version of arcticdb libraries, as that doesnt change anything to the Python API but would drastically reduce the build time with an effort that's far easier to setup (but still an effort). Maybe that would be worth exploring once arcticdb switches to C++20. |
bb30880
to
e7dc278
Compare
Thanks for all the work here @Klaim Please merge when ready. |
This set of changes attempts to reduce the total build-time of ArcticDB C++ code.
After many experiments I ended up going with the following strategy:
types.hpp
)