El 'ref' no pasa el objeto a la función, sino que pasa una referencia a la variable en la que está almacenado en/at.
Si el objeto es una clase o una interfaz, cada vez que acceda a esa variable en la función, tiene que desreferenciarla y luego acceder a la variable. Si se pasó sin la palabra clave 'ref', entonces no tendría que hacer el paso de desreferencia (por lo tanto, será un poco más rápido).
Si el objeto es una estructura (o enum u otro tipo base), la palabra clave 'ref' pasa una referencia a la variable que almacena la estructura, que aún provoca el ligero golpe de dereferencia cuando lo usa, pero si no lo especifica, entonces el programa tiene que asignar memoria para una nueva instancia de la estructura y luego copiarla. En la mayoría de los casos, es más rápido pasar estructuras a través de la palabra clave ref, pero este puede no ser el caso si se trata de una estructura realmente pequeña, o si se desreferencia mucho (y me refiero a MUCHO).
Así que si está pasando una estructura, entonces ref generalmente es el camino a seguir, de lo contrario no habrá mucha diferencia (la sobrecarga en la fase de eliminación de referencias es minúscula).
Ah, y para responder realmente a la pregunta, un mapa de bits es una clase, por lo que la palabra clave 'ref' no generará realmente una diferencia de velocidad sobre un parámetro que no es `` aref ''.
vb.net: [which-is-faster-byval-or-byref] (http://stackoverflow.com/questions/408101/which-is-faster-byval-or-byref) – nawfal
Ahora hay forma cómo se podría pasar un mapa de bits por valor. – IllidanS4