Allow independent imports of all submodules #464
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Just played around trying to get independent imports to work. Turns out it's not that hard, if one reads the nimble readme with some attention, haha.
We have to add a
arraymancer
directory and need the submodule files in there, e.g. the main file fortensor.nim
.Now we can think about which parts of arraymancer can be used as submodules. I suppose in principle all that have their own submodules and are imported in
arraymancer.nim
via a single file. Not quite sure what that implies for the files in thestats
dir. Need to test whether they can be imported separetely as:for instance.
Sorry, that the gif diff looks so horrendeous.edit: turns out I accidentally staged the emacs backup files. Ooops, one sec.
edit2: much better
edit n: on my machine compiling the added
test_indep_import.nim
modified to useimport arraymancer
takes:and with only importing tensor:
edit n+1: for ggplotnim the relative gains are more modest, but the absolute is about the same. On one recipe (the periodic table one, since it uses quite a few formulae), it goes from ~5.9 s down to ~ 4.7 s.