Документация на модуле Bigarray несколько расплывчата. В нем указано, что целью массивов в этом модуле является хранение «больших массивов», но на самом деле он не определяет, что означает «большой массив». Когда следует использовать Bigarray над регулярным массивом? Есть ли определенное количество элементов, за которыми я должен просто использовать Bigarray? Это в тысячах? Миллионы? Миллиарды?Когда мне нужно использовать Bigarray и почему?
А что делает Bigarray лучше при работе с большими массивами? Что делает регулярный массив лучше при работе с ... не большими массивами?
Возможно, это определение «большого массива» как «разреженного массива», хотя я совершенно не осведомлен о OCaml, поэтому я мог бы быть здесь waaaay. –
Даже в этом случае, зачем вам нужна другая структура данных? –
Редкий массив не содержит (обязательно) пробел в памяти или даже указатель на 'null' для каждого элемента массива. Если у вас есть массив из 2 миллиардов элементов, как вы предлагаете в своем вопросе, это около 8 ГБ, чисто в указателях. Если у вас есть только 5 элементов в массиве (предположительно при высоких индексах), то ваше пространство для хранения действительно должно содержать 5 указателей и принимать несколько байтов. –