Do not use return, break, exit or continue

MAXScript FAQ > How To Make It Faster > Do not use return, break, exit or continue

Return, break, exit, continue and throw are implemented using C++ exception.

C++ exceptions are SLOW!

TEST CASES:

fn test1a v = (if v == true do return 1; 0)
fn test1b v = (if v == true then 1 else 0)

FOR 100,000 ITERATIONS:

test1a true  -- 15890 msec.
test1a false  -- 78 msec.
test1b true  -- 47 msec.
test1b false  -- 62 msec. 

TEST CASES:

fn test2a =
(
  local res
  for i = 1 to 1000 do
    if i == 10 do (res = i; break;)
  res
)

fn test2b =
( 
  local notfound = true, res
  for i = 1 to 1000 while notfound do
    if i == 10 do (res = i; notfound = false;)
  res
)

FOR 100,000 ITERATIONS:

test2a()   -- 84265 msec.
test2b()   -- 1359 msec.

Previous Tip

matchPattern is faster than findString

Next Tip

Use StringStream to build large strings