Oggi è comparso sul blog di Francesco Balena è comparso un quiz-post e, forte dell'esperienza con i Quiz Sharp di Adrian , ho deciso di provarci.
Siccome si parlava di Array e performance mi è subito venuta in mente la classe System.Buffer incontrata per caso una sera girovagando in Reflector e credo sconosciuta ai più.
Come dice MSDN:
This class provides better performance for manipulating primitive types than similar methods in the System.Array class
Ho pensato allora che poteva proprio fare al caso mio e ho buttato giù 3 righe di codice per verificare effettivamente l'incremento delle performance e in effetti ci ho preso
Per tutti i dettagli e le interessanti osservazioni che ne sono emerse rimando ai commenti del post.
Una cosa che credo sia interessante riportare è la possibilità di lavorare in modalità unsafe per avere maggiori performance quando si lavora con gli array, in un commento al post ho riportato una possibile funzione per quel caso, adattando un articolo di MSDN: How to: Use Pointers to Copy an Array of Bytes
Questa tecnica può essere molto utile non solo quando bisogna copiare array, ma anche quando bisogna confrontarli e questo anche in riferimento a una discussione di qualche tempo fa sui ng alla quale ero intervenuto dove si chiedeva quale fosse il modo più efficiente per confrontare due array di byte.
Comunque si parla di migliaia di iterazioni su array che contengono molte migliaia di elementi, se non si hanno queste esigenze il caro vecchio ciclo for può andare più che bene.