Often Do[v, n] looped return values are too large e.g. 3D polygonizations.
Had the polygons copied from the rhs to lhs in case of identities like lhs=rhs, then the cloud objects bogged down with excessive memory use and greatly slowdown.
Problem was solved by returning “ffVoid” :
"ffVoid";
and the actually large return value compressed and stored into “var/value” or “var value”.
These worked well for identities e.g. lhs = “var/value”;
In some cases lhs = func[“var/value”]; failed!
Partial solution, which requires more work and testing is to return a expression-String that calls a module or pure function to acquire the data per request! See below.
Q: Is this a good mechanism for all variable values? Or should it only be used for data with large values!
Notebook: ff_do.nb
...
"ffVoid";
(*much much better and easier to use*)
(*this works when the data is small, not sure, for 3D meshes will not work*)
StringReplace["CCNffGetSortedVar[ \"var1value\", cred1]", {"var1" ->
StringReplace[ var, {"(" -> "", ")" -> ""}],
"cred1" -> ToString[cred]}]