Performance
GetType()no longer re-derives the same lookup dozens of times per compound during file
upload:InitState()computes each parameter's type once and threads it intoNAVal()(now
takes an optionaltype =to skip its own internalGetType()call).GetType()/GetSource()now use an indexedon = "ID"lookup instead of a full-table scan of
spec.GetGuiLabel()/GetReportLabel()batch-join all requestedidsin one call instead of scanning
speconce per id — this turned out to matter more than theGetType()fix above, since
SetSCRawData()callsGetGuiLabel()once per row of the raw Science Cloud upload file, not
once per spec parameter.CalculateSCInputs()batch-looks-upSCFILTER/SCVALUE/TYPEfor all ids once instead of
scanningstate$specper id inside its loop.
Measured against real uploads through the running MMVFree/MMVSola apps (chromote-driven browser
against a real Shiny reactive session, not a synthetic benchmark): total upload time 4.74s → 3.05s
for MMVFree (28-param spec, 1.55x), 16.1s → 11.8s for MMVSola (166-param spec, 1.37x).
No API changes other than the new optional NAVal(..., type =) argument (additive, backwards
compatible).
Closes #8.