Array inserts makes the whole array rescale, it involves creating a copy of the original array, so it is avoided because it requires more memory and is slower than initializing the array to it's final size straight away and then replace elements (To know how large a part of the array has actually been filled with real data, if that is necessary to know, add a counter/counters...). I have attached an example.
Locals and globals are avoided for many of the same reasons; they create copies of the data and are slow...they also allow race conditions (no guarantee that the data is read/written in the correct order...) Locals can normally be avoided just by using data flow; use the wires to hand over data, do not write or read it using locals. They ha
ve their place though, e.g. if you need two parallel loops to share data, but in many cases it's better then to use what is called a functional global.
Read more about this on:
http://zone.ni.com/devzone/conceptd.nsf/webmain/732CEC772AA4FBE586256A37005541D3?opendocument&node=DZ52068_US
http://zone.ni.com/devzone/conceptd.nsf/webmain/82E60E34E609C22A862569F8007E3F4A?opendocument
http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=506500000008000000637D0000&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0&USEARCHCONTEXT_QUESTION_0=Do+not+use+locals&USEARCHCONTEXT_QUESTION_S=0