control rate is 3khz , so your write will be recording every 0.3 milliseconds.
if you are doing something with user input, depending upon resolution of your controller, then you will get away with anything from 1ms to 10ms without feeling lag. doing this will dramatically reduce the table size you need for the 'time' you want to record.
however, this is not the approach id take .. for user input
what I would do is store the 'time' and event data, such that you only record changes, especially if you are using midi (which only has 7 bit resolution, so most of the time its not changing)
ie.. you store time + value ,then a table can store N events.
the easiest way to do this is to use 2 tables,
one for time, one for value. (you could also squash into 1 potentially using a 32b table, and use top bits for time, lower for value).
time is then a loop counter 0 to N, value is value,
so with each change in value, you store the time and value in the table(s)
for 'playback' you use the loop counter, and check to see if its the same as the time table, if it is you read the value.
(you need separate counters for current position in table)
hmm, its easier to do than describe!
note: with tables (rather than a more complex data structure) you can only do overwriting overdub, you can't do any inserting, as there are (currently) no functions on the tables to insert data, and so move existing events
EDIT: I've noticed your talking about recording an LFO, I assume this is because a user is changing it... as recording anything that is constant has no purpose... in which case Id still record 'the events' not the output... i.e. the pitch changes a user is making.
for me, its all about using limited resources (like memory/cpu) carefully... if you do at the small / subpatch level, then when you start reusing in bigger patches, you will have a better chance to do what you want