Имеет ли F # синтаксис, эквивалентный «небезопасному» блоку C # - PullRequest
9 голосов
/ 06 сентября 2010

Большая проверка границ массива замедляет скорость, это особенно верно для 2D-массивов. Есть ли способ написать небезопасные блоки кода в F #?

Ответы [ 4 ]

9 голосов
/ 06 сентября 2010

Я не программист F # , но, насколько я понимаю, у него, похоже, нет ключевого слова unsafe .

Вы можете повысить производительность, преобразовав двумерный массив в одномерный.

Совет 5: Пока мы не получим это право, я предложил бы пользователям .NET делать то, что многие программисты C ++ делают: написать класс для реализации вашего n-мерный массив. Это было бы представлен в виде одномерного массива, и соответствующие средства доступа будут конвертировать n индексов в 1 через соответствующие умножения. Мы почти наверняка не устранит проверка границ в 1-й массив, но, по крайней мере, мы бы сделали только одну проверку!

Устранение проверки границ массива в CLR

3 голосов
/ 22 ноября 2012

См. здесь , чтобы узнать, как заставить компилятор удалить проверку границ для вас.По сути, вы должны писать свои циклы таким образом, чтобы компилятор знал, что ваши индексы будут в границах.Если он знает, что он будет в границах, то при запуске в режиме выпуска без отладки JIT-компилятор удалит проверки границ для вас.

2 голосов
/ 06 сентября 2010

Я не использовал его, чтобы узнать, если / как это применимо, но все же проверьте модуль NativePtr .

1 голос
/ 06 сентября 2010

Не в этой версии, и я сомневаюсь, что они когда-нибудь ее добавят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...