Когда я должен использовать Bigarray и почему?

В моем C++ я определяю, ТРЕБУЮТ (x), который похож, утверждают (x) за исключением того, что он выдает исключение, если утверждение перестало работать в сборке конечных версий.

, Так как неудавшееся утверждение указывает на ошибку, его нужно рассматривать серьезно даже в Сборке конечных версий. Когда производительность моего кода будет иметь значение, я буду часто использовать, ТРЕБУЮТ () для высокоуровневого кода и утверждают () для кода низшего уровня, который должен работать быстро. Я также использую, ТРЕБУЮТ вместо, утверждают, может ли состояние отказа быть вызвано данными, переданными в от кода, записанного третьим лицом, или повреждением файла (оптимально, я разработаю код конкретно, чтобы быть хорошего поведения в случае повреждения файла, но у нас не всегда есть время, чтобы сделать это.)

Они говорят, что Вы не должны показывать, что те утверждают сообщения конечным пользователям, потому что они не поймут их. Так? Конечные пользователи могут послать Вам электронное письмо со снимком экрана или некоторым текстом сообщения об ошибке, которое помогает Вам отладить. Если пользователь просто говорит, что "это отказало", у Вас есть меньше способности зафиксировать его. Было бы лучше отправить сообщения об отказе утверждения себе автоматически по Интернету, но который только работает, если у пользователя есть доступ в Интернет, и можно получить их разрешение.

8
задан Jason Baker 2 November 2009 в 12:37
поделиться

1 ответ

Я нашел ответ на этот вопрос (из this page ):

Библиотека bigarray реализует большие многомерные числовые массивы. Эти массивы называются «большими массивами», чтобы отличать их от стандартных массивов Caml, описанных в Модульном массиве. Основные различия между «большими массивами» и стандартными массивами Caml заключаются в следующем:

  • Большие массивы не ограничены по размеру, в отличие от массивов Caml (массив с плавающей запятой ограничен 2097151 элементом на 32-битной платформе, другие типы массивов - 4194303 элементов).
  • Большие массивы многомерны. Поддерживается любое количество размеров от 1 до 16. Напротив, массивы Caml являются одномерными и требуют кодирования многомерных массивов как массивов массивов.
  • Большие массивы могут содержать только целые числа и числа с плавающей запятой, тогда как массивы Caml могут содержать произвольные типы данных Caml. Однако большие массивы обеспечивают более эффективное хранение целочисленных элементов и элементов с плавающей запятой, в частности потому, что они поддерживают «маленькие» типы, такие как числа с плавающей запятой одинарной точности и 8- и 16-битные целые числа, в дополнение к стандартным типам Caml типа double -точность с плавающей запятой и 32- и 64-битные целые числа.
  • Расположение памяти больших массивов полностью совместимо с массивом в C и Fortran, что позволяет передавать большие массивы туда и обратно между кодом Caml и кодом C / Fortran с никакого копирования данных.
  • Большие массивы поддерживают интересные высокоуровневые операции, которые обычные массивы не могут обеспечить эффективно, такие как извлечение подмассивов и «разрезание» многомерного массива по определенным измерениям, все без копирования.
11
ответ дан 5 December 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: