Pull to refresh

Comments 4

Не стоит использовать != в управлении циклом

OpenMP в основном предназначается для параллельной обработки данных. Любая порция данных имеет определённый размер. Стандарт C++ вводит специальный тип данных «size_t» для хранения размеров. По определению он не может быть отрицательным. Так что главное правило — используйте правильные типы данных. Не нужно писать
for(int i = 0...
если вы хотите проитерировать контейнер. Это не только будет легче читаться, но и упростит задачу компилятору.

P.S. конечно и итерация отрицательных чисел иногда нужна бывает. Но большинство задач сводятся к векторизации обработки массивов.
Кто знает почему под C# не сделали OpenMP реализацию? Там вроде есть параллелизм данных, но скорость на поток резко падает по сравнению с аналогичным циклом в Фортране?
Может потому, что в C# есть сборщик мусора? И на каждый чих память выделяется из кучи. Всё же для числодробилок есть языки с ручным управлением памятью.
Выделение памяти крайне быстрое, а вот сборка мусора — да, медленно.
Sign up to leave a comment.

Articles