I have a dataframe_view d computing stuff on (words default_observer) on SCM with CELEX vocab, so 30k words. I have set up a steps object that contains these two instructions:
create steps in_trial_loop
...
in_trial_loop add quietly present step stimulus=$Word stimulus_duration=200
in_trial_loop add R << eN["res_temp"] = eN["d"]
...
the trial can take 30 sec and that's all right. But then the copy right below takes 18 sec !!
BEGIN(2): [454] R << eN["res_temp"] = eN["d"]
BEGIN(3): [455] create dataframe res_temp
END(3): [455] create dataframe res_temp, OBJECT: res_temp; dataframe/{}:
INFO: [455] took 00:00:00
END(2): [454] R << eN["res_temp"] = eN["d"] , no return object
INFO: [454] took 00:00:18.294366
d is the dataframe_view that looks at all columns in (words default_observer), so its job may be long, but its size is quite small, 3 columns and a few rows. Sp I am not sure whether those 18 sec account for that job, since probably d should be already be computed in the trial. So I don't know if this long time is just the time to compute the dataframe_view or some bug.
As a test I did a bit of rearranging of the R instructions eliminating the copy to res_temp, and indeed the 18 sec or similar still show up, so I assume that's the time spent by lazynut to compute the dataframe_view code and not to perform a copy of a very small df.
Yes, lazyNut is lazy... in two respects. eN["words default_observer"] isn't even filled until it's first read (because writing row-by-row is really inefficient in R --- it's worse than the slowdown of caching the to-be-written information), and eN["d"] won't be computed until it's first read.