discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

OpenSCAD release candidate: 2020.12-RC2

F
fred_dot_u
Mon, Dec 7, 2020 2:09 PM

Is it possible in the world of Windows to install the RC alongside an earlier
version? I'm not usually an early adopter, but reading that there are tabs
involved has me on the edge.

--
Sent from: http://forum.openscad.org/

Is it possible in the world of Windows to install the RC alongside an earlier version? I'm not usually an early adopter, but reading that there are tabs involved has me on the edge. -- Sent from: http://forum.openscad.org/
J
jon
Mon, Dec 7, 2020 2:15 PM

I have the latest release and the latest snapshot both installed in
Windows without a problem: just put them in different folders under the
Program Files directory tree

Jon

On 12/7/2020 9:09 AM, fred_dot_u via Discuss wrote:

Is it possible in the world of Windows to install the RC alongside an earlier
version? I'm not usually an early adopter, but reading that there are tabs
involved has me on the edge.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

I have the latest release and the latest snapshot both installed in Windows without a problem: just put them in different folders under the Program Files directory tree Jon On 12/7/2020 9:09 AM, fred_dot_u via Discuss wrote: > Is it possible in the world of Windows to install the RC alongside an earlier > version? I'm not usually an early adopter, but reading that there are tabs > involved has me on the edge. > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
NH
nop head
Mon, Dec 7, 2020 2:16 PM

You can download the zip version. Unzip it anywhere you want and execute it
from there.

On Mon, 7 Dec 2020 at 14:10, fred_dot_u via Discuss <
discuss@lists.openscad.org> wrote:

Is it possible in the world of Windows to install the RC alongside an
earlier
version? I'm not usually an early adopter, but reading that there are tabs
involved has me on the edge.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

You can download the zip version. Unzip it anywhere you want and execute it from there. On Mon, 7 Dec 2020 at 14:10, fred_dot_u via Discuss < discuss@lists.openscad.org> wrote: > Is it possible in the world of Windows to install the RC alongside an > earlier > version? I'm not usually an early adopter, but reading that there are tabs > involved has me on the edge. > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
F
fred_dot_u
Mon, Dec 7, 2020 2:18 PM

thanks for the confidence boost. I'll have to give it a shot.

--
Sent from: http://forum.openscad.org/

thanks for the confidence boost. I'll have to give it a shot. -- Sent from: http://forum.openscad.org/
RD
Revar Desmera
Tue, Dec 8, 2020 4:41 AM

Yay for optimizations!  I have a couple questions, though:

  • Is [each LIST1, each LIST2] optimized like concat()?
  • Does the concat() optimization imply a speed improvement for complex list comprehensions with ‘if’s etc.?
  • Is the concat() optimization now O(1) for both appending a single item, and for appending a long list?

-Revar

On Dec 7, 2020, at 1:58 AM, Hans L thehans@gmail.com wrote:

Generic tail recursion https://github.com/openscad/openscad/pull/3020 was an improvement to the Tail Call Optimization https://en.wikipedia.org/wiki/Tail_call (see also here https://en.wikibooks.org/w/index.php?title=OpenSCAD_User_Manual/User-Defined_Functions_and_Modules#Recursive_functions) so that it applies to many more forms of function definitions than previously (for example using "let" was not an option before and now it is), which in general means faster recursion and less chance of stack overflow.

Unrelated to that change, but relevant to one of the complaints in the recent OpenSCAD Python discussion:
On Thu, Nov 26, 2020 at 12:29 PM adrianv <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:
...
Algorithms in the literature may be O(N*log(N)) but that
assumes you have actual data structures.  In OpenSCAD it may turn out to be
O(N^3) instead.  In many cases it just doesn't seem practical to implement
efficient algorithms.

I think it should also be mentioned that this release contains changes to make array concatenation complexity O(1) instead of O(n), which should be a major improvement (up to 10,000x https://github.com/openscad/openscad/issues/3380 has been seen in one extreme case) for many data-heavy algorithms/scripts.

Hans

Yay for optimizations! I have a couple questions, though: - Is [each LIST1, each LIST2] optimized like concat()? - Does the concat() optimization imply a speed improvement for complex list comprehensions with ‘if’s etc.? - Is the concat() optimization now O(1) for both appending a single item, and for appending a long list? -Revar > On Dec 7, 2020, at 1:58 AM, Hans L <thehans@gmail.com> wrote: > > Generic tail recursion <https://github.com/openscad/openscad/pull/3020> was an improvement to the Tail Call Optimization <https://en.wikipedia.org/wiki/Tail_call> (see also here <https://en.wikibooks.org/w/index.php?title=OpenSCAD_User_Manual/User-Defined_Functions_and_Modules#Recursive_functions>) so that it applies to many more forms of function definitions than previously (for example using "let" was not an option before and now it is), which in general means faster recursion and less chance of stack overflow. > > Unrelated to that change, but relevant to one of the complaints in the recent OpenSCAD Python discussion: > On Thu, Nov 26, 2020 at 12:29 PM adrianv <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: > ... > Algorithms in the literature may be O(N*log(N)) but that > assumes you have actual data structures. In OpenSCAD it may turn out to be > O(N^3) instead. In many cases it just doesn't seem practical to implement > efficient algorithms. > > I think it should also be mentioned that this release contains changes to make array concatenation complexity O(1) instead of O(n), which should be a major improvement (up to 10,000x <https://github.com/openscad/openscad/issues/3380> has been seen in one extreme case) for many data-heavy algorithms/scripts. > > Hans
T
Troberg
Tue, Dec 8, 2020 7:05 AM

Just tested it with some complex projects, and so far, it seems very nice!

Assuming there are no showstoppers, when dare we hope for the real final
release?

--
Sent from: http://forum.openscad.org/

Just tested it with some complex projects, and so far, it seems very nice! Assuming there are no showstoppers, when dare we hope for the real final release? -- Sent from: http://forum.openscad.org/
HL
Hans L
Tue, Dec 8, 2020 7:32 AM

On Mon, Dec 7, 2020 at 10:41 PM Revar Desmera revarbat@gmail.com wrote:

Yay for optimizations!  I have a couple questions, though:

  • Is [each LIST1, each LIST2] optimized like concat()?

Yes, list-comprehension each is optimized in the same way as concat.

  • Does the concat() optimization imply a speed improvement for complex list

comprehensions with ‘if’s etc.?

  • Is the concat() optimization now O(1) for both appending a single item,

and for appending a long list?

If it uses concat or each, it should benefit from this optimization in all
cases, regardless of how complex the overall expression is.

However, there is one caveat: the first "random access" (aka any use of
subscript operator: vector[i] ) after any number of such concat/each
operations, will force a "flattening" of the vector internally, which has a
one-time cost of O(n) time.
Once flattened, subsequent random access reads will be O(1) as usual.

For more details about the implementation of this and how it came about,
you can read the PR discussion starting with the last paragraph of the
comment here:
https://github.com/openscad/openscad/pull/3102#issuecomment-652579183
I've also tried to document the feature and data structure details in
source code comments here:
https://github.com/openscad/openscad/blob/6768ed7df36b83b277d0aec903c84c3078a5ac8a/src/value.h#L338-L360

More importantly, if you have any existing scripts which were slow from
constructing large vectors, just try the new RC and see how it goes.  I
think the majority of such cases will see significant improvements.

Cheers,
Hans

On Mon, Dec 7, 2020 at 10:41 PM Revar Desmera <revarbat@gmail.com> wrote: > Yay for optimizations! I have a couple questions, though: > > - Is [each LIST1, each LIST2] optimized like concat()? > Yes, list-comprehension each is optimized in the same way as concat. - Does the concat() optimization imply a speed improvement for complex list > comprehensions with ‘if’s etc.? > - Is the concat() optimization now O(1) for both appending a single item, > and for appending a long list? > If it uses concat or each, it should benefit from this optimization in all cases, regardless of how complex the overall expression is. However, there is one caveat: the first "random access" (aka any use of subscript operator: vector[i] ) after any number of such concat/each operations, will force a "flattening" of the vector internally, which has a one-time cost of O(n) time. Once flattened, subsequent random access reads will be O(1) as usual. For more details about the implementation of this and how it came about, you can read the PR discussion starting with the last paragraph of the comment here: https://github.com/openscad/openscad/pull/3102#issuecomment-652579183 I've also tried to document the feature and data structure details in source code comments here: https://github.com/openscad/openscad/blob/6768ed7df36b83b277d0aec903c84c3078a5ac8a/src/value.h#L338-L360 More importantly, if you have any existing scripts which were slow from constructing large vectors, just try the new RC and see how it goes. I think the majority of such cases will see significant improvements. Cheers, Hans
T
Troberg
Tue, Dec 8, 2020 4:47 PM

Just noticed the informative syntax error messages. Saves me lots of time
when I do stupid mistakes!

--
Sent from: http://forum.openscad.org/

Just noticed the informative syntax error messages. Saves me lots of time when I do stupid mistakes! -- Sent from: http://forum.openscad.org/
T
Troberg
Wed, Dec 9, 2020 7:47 AM

Just noticed a massive slowdown when rendering a complex model in preview. On
the previous version it's a 15-20 second render, in the RC, it's a five
minute render.

It's a too complicated design to easily nail down where the difference is,
but something isn't as it should be.

--
Sent from: http://forum.openscad.org/

Just noticed a massive slowdown when rendering a complex model in preview. On the previous version it's a 15-20 second render, in the RC, it's a five minute render. It's a too complicated design to easily nail down where the difference is, but something isn't as it should be. -- Sent from: http://forum.openscad.org/
HL
Hans L
Wed, Dec 9, 2020 11:06 AM

If you can't provide an example to reproduce it then there's not a lot of
hope in fixing it.

Before troubleshooting further, are you sure you didn't run out of RAM and
hit swap space when the RC was run?  That could certainly cause such a
slowdown.
If you ran the previous release first(assuming it used a significant
portion of your RAM) and left it open while testing the RC, I could see
that possibly happening.

If that's not the cause, then I would recommend trying to single out which
part(s) of the design are taking much longer on RC, by systematically using
disable modifiers * and/or a root modifier ! on different places in the
script.
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Modifier_Characters#Disable_Modifier

To speed up the process, you can try reducing $fn (or increasing $fs and
$fa) wherever used.
Also if there are loops of geometries involved, try reducing their loop
count significantly.
If it's possible  to reduce overall complexity until the previous release
takes say 1 second to preview, then if the RC is really still 15x-20x
slower in this case,  at least you should only have to wait 15-20 seconds,
not 5 minutes, in between trying out disable modifiers etc.

Hans

On Wed, Dec 9, 2020 at 1:48 AM Troberg troberg.anders@gmail.com wrote:

Just noticed a massive slowdown when rendering a complex model in preview.
On
the previous version it's a 15-20 second render, in the RC, it's a five
minute render.

It's a too complicated design to easily nail down where the difference is,
but something isn't as it should be.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

If you can't provide an example to reproduce it then there's not a lot of hope in fixing it. Before troubleshooting further, are you sure you didn't run out of RAM and hit swap space when the RC was run? That could certainly cause such a slowdown. If you ran the previous release first(assuming it used a significant portion of your RAM) and left it open while testing the RC, I could see that possibly happening. If that's not the cause, then I would recommend trying to single out which part(s) of the design are taking much longer on RC, by systematically using disable modifiers * and/or a root modifier ! on different places in the script. https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Modifier_Characters#Disable_Modifier To speed up the process, you can try reducing $fn (or increasing $fs and $fa) wherever used. Also if there are loops of geometries involved, try reducing their loop count significantly. If it's possible to reduce overall complexity until the previous release takes say 1 second to preview, then if the RC is really still 15x-20x slower in this case, at least you should only have to wait 15-20 seconds, not 5 minutes, in between trying out disable modifiers etc. Hans On Wed, Dec 9, 2020 at 1:48 AM Troberg <troberg.anders@gmail.com> wrote: > Just noticed a massive slowdown when rendering a complex model in preview. > On > the previous version it's a 15-20 second render, in the RC, it's a five > minute render. > > It's a too complicated design to easily nail down where the difference is, > but something isn't as it should be. > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >