I would regard this as an argument against using the readline input hook.
Comparing and updating the model is an expensive task and we should avoid
doing it whenever possible. When I bloat the symbol table with 10000
variables it takes multiple second to check and rebuild model - you can't
expect it to run every 0.1s at max. Sure, this is a target for optimization
(I think of hashing the symbol table before actually comparing it variable
by variable), but nevertheless we shouldn't stress it I think.
You're right, performances may decrease. That's also why I think it's worth
considering the problem the other way around: let octave tell you when you
need to update the variable browser. In the end, octave is the one who
should know whether something change in the current scope. If you had such
flag, the readline input hook could be very light.