50g Mini-Challenge: Number of positive divisors of x!
|
10-01-2017, 02:09 PM
Post: #17
|
|||
|
|||
RE: 50g Mini-Challenge: Number of positive divisors of x!
(09-30-2017 10:52 PM)DavidM Wrote: In addition to the inherent loop structure speedup that SysRPL gives, I think if you look at what's inside those loops you'll see another reason for the speed advantage that Gerald's SysRPL version has: lots of "combo" commands that directly manipulate the stack without having to validate the arguments given. 5ROLL, 4UNROLL, 2DROP, etc. go about their business without bothering to check that the stack can accommodate their action or that the numeric constant applies. So in many of the "equivalent" UserRPL steps, you've not only got the usual overhead for argument count/type checking (and LASTARG/cached stack saving), you've also got additional RPL stream maintenance and stack validation occurring that aren't present when executing the SysRPL code. A related issue is that User RPL stack commands that take a numeric argument (PICK, ROLL, etc) take about 7 times as long as simple stack commands such as SWAP or ROT. I go to great lengths to avoid using those slow commands inside loops. Also, WHILE and UNTIL loops are slower than START loops in User RPL whereas WHILE is very fast in SysRPL. John |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 3 Guest(s)