RuleBasedIntegration / JOSS-Publication

Text-sources for the publication of Rubi in the Journal of Open-Source Software
MIT License
4 stars 0 forks source link

Loading Rubi for the first time. #1

Closed rljacobson closed 5 years ago

rljacobson commented 5 years ago

This comment is slightly out of the scope of my review responsibilities and so should not be considered as a request for revision. It is mostly to satisfy my own curiosity and partly to suggest a possible method to improve loadtime of the system.

Loading Rubi the first will create a binary version of Rubi for your system. This may take a minute or two, but all subsequent calls to load Rubi will be almost instantaneouss.

A minute or two is a long time.

  1. Would serializing Rubi in the WDX format improve performance of the initial import? The docs say WDX was introduced in version 6.
  2. Alternatively, MX, while not backward compatible, is claimed to be forward compatible. Have you experimented with serializing Rubi with the oldest supported Mathematica version to improve initial import? The MX format is also not compatible between systems differing $SystemWordLength, which may rule out this strategy.
  3. In Mathematica 11.3 we now have WXF, another binary serialization format. Have you experimented with this as a distribution format?

It may be that none of these strategies improves the first load time, e.g. if the load time is dominated by platform and version specific compilation rather than parsing the input format. But as I think about this, it occurs to me that if the packlet distribution system, which I know almost nothing about, is smart enough to request a packlet specific to a version and system, then couldn't you push the bytecode compilation step to package creation time instead of first load time?

rljacobson commented 5 years ago

Having now experimented with Rubi on a late 2015 iMac, I've found that the initial import really isn't a big deal. The package displays clear explanatory text, and at a certain stage we even get a progress bar, which is a really nice touch. The @halirutan has already thought of my suggestions, of course. This seems to be the best known solution, and it really isn't that bad.