Язык C# заслужил большое уважение и популярность среди разработчиков самых разных программных продуктов. Последнюю пару лет C# играл важную роль в производстве устойчивых к сбоям продуктов — от настольных приложений до Web сервисов, от высокоуровневых решений в автоматизации бизнес-процессов до программ системного уровня и от однопользовательских продуктов до корпоративных решений в сетевых распределенных средах. Зная о мощных средствах этого языка, можно задаться вопросом: нельзя ли использовать C# и Microsoft .NET Framework не только для GUI- и Web-компонентов? Готово ли научное сообщество воспринимать их всерьез при разработке кода для высокопроизводительных вычислений? Ответ не вполне очевиден, поскольку сначала надо ответить на многие другие вопросы. Например, что такое научные вычисления? Чем они отличаются от обычных вычислений? Действительно ли у языков есть характеристики, по которым можно решить, насколько они соответствуют требованиям научных программ?
В этой статье я рассмотрю некоторые внутренние особенности C#, позволяющие легко и практично создавать код, критичный к скорости выполнения. Вы увидите, какую серьезную роль может сыграть C# в научном сообществе, открыв двери численным расчетам следующего поколения. Вы также убедитесь, что, несмотря на слухи о медленной работе управляемого кода из-за издержек в управлении памятью, весьма сложный код выполняется удивительно быстро; он не прерывается сборщиком мусора просто потому, что большинство вычислительных операций не выгружают (discard) достаточно памяти для инициации сбора мусора. Я исследую качества, благодаря которым C# является хорошей альтернативой в мире численных расчетов, а также приведу результаты нескольких эталонных тестов и сравню их с результатами неуправляемого C++, чтобы понять, на каком уровне находится C# с точки зрения производительности и эффективности.
Источник