I'm not commenting on performance, but there there is the obvious difference with instance variables vs global/local, which is that each object instance has its own copy of an instance variable. So if you need a value that can be different for each instance, then an instance variable is your first choice. I'm not ruling out other possibilities for tracking per-instance data, such as an array that might store instance UIDs along with the associated data.
For the other decision, there is a rule of thumb called locality of reference, which says that you should declare something close to where you use it. This would mean using local variables where you need a value only in a particular 'scope', e.g. within a single event and/or sub-events. This is a kind of 'data hiding', which is generally a useful thing and helps to modularise your code. For everything else, there are global variables.