La documentación en el módulo Bigarray es algo vaga. Establece que el propósito de las matrices en ese módulo es mantener "matrices grandes", pero realmente no define lo que significa "matriz grande". ¿Cuándo debería usar un Bigarray en una matriz regular? ¿Hay una cierta cantidad de elementos más allá de los cuales debería usar un Bigarray? ¿Está en los miles? Millones? Miles de millones?¿Cuándo necesito usar un Bigarray y por qué?
¿Y qué hace que un Bigarray sea mejor para tratar arreglos grandes? ¿Qué hace que una matriz regular sea mejor para tratar con ... arreglos no grandes?
Puede ser que esté definiendo una "gran matriz" como una "matriz dispersa", aunque no conozco completamente OCaml, por lo que podría quedarme mudo aquí. –
Incluso en ese caso, ¿por qué necesitaría una estructura de datos diferente? –
Una matriz dispersa no mantiene (necesariamente) un espacio en la memoria, o incluso un puntero a 'null' para cada elemento de la matriz. Si tiene una matriz de 2 mil millones de elementos como sugiere en su pregunta, ese valor es de aproximadamente 8 GB, puramente en indicadores. Sin embargo, si solo tienes 5 elementos en la matriz (presumiblemente en índices altos), entonces tu espacio de almacenamiento solo necesita contener 5 punteros y ocupar un puñado de bytes. –