There is an easier way than my first example, at least for this case.
start = Tick Seconds();
dt = New Table();
dt << New Column( "test", Character, "Nominal", Formula( Eval( dt << getname ) ) );
dt << addrows( 1e7 );
dt << runformulas;
stop = Tick Seconds();
Show( stop - start );
The Formula argument of the NewColumn message to a data table was originally designed to be very easy to use for the common cases, something like
Formula( height + weight )
where height and weight are data table columns and the addition should be done on each row. So, Formula does not evaluate its argument, but just stores the unevaluated expression as the column's formula.
Unless...the outer function is Eval(...) which you see in the easier example above. When the formula(...) argument is processed, it looks for the Eval and uses the evaluated result. There are other places in JMP that do this too. And, there are other places, like the substitute function, that use Expr(...) to prevent an evaluation of expression arguments.
Craige