Is it faster to access an Vector3 array than to access a mesh's vertices?

I’m having some real slowdown in an app when it accesses a mesh’s vertex positions. (It has to do this sometimes many times in one frame.) I want to try adding a separate array of Vector3’s which will mimic the mesh.vertices array - and then use the separate array for reference, only accessing the mesh vertices when changing them.

Am I barking up the wrong tree here, or might this help my performance? I’m asking if there’s any extra overhead in checking an entry in a mesh.vertices array compared with checking an identical array which is separate from the mesh.

Yes, you should do

var vertices = GetComponent.<MeshFilter>().mesh.vertices;
// do stuff with vertices
GetComponent.<MeshFilter>().mesh.vertices = vertices;

I’ve checked and using a stored separate array gives the much needed speed boost. For comparison I also tried Eric’s method above, but because of the structure of my code, the function I call several times per frame copies mesh.vertices into a new Vector3 array and accesses that instead - so I still got the very bad slowdown I need to avoid.

Having a stored identical array (i.e. declaring it at top of file), and accessing that instead, was ~180X faster! Obviously it can only be used when referencing the vertex positions, not changing them, but that’s all I need for my current purposes.