Аннотация:
Статья посвящена некоторым тонкостям использования шаблонов классов (class templates) языка C++ при совместном использовании “управляемого” (managed) и стандартного C++. Статья предполагает знание основ управляемого C++ в среде .Net. Перед прочтением настоящей статьи настоятельно рекомендуется ознакомиться со статьей Игоря Ткачёва “Управляемый C++”
Похоже, в дотнете 1.1 улучшили оптимизацию джита. Так что теперь скорость кода скомпилированного в IL всего на несколько процентов медленнее, чем аналогичного машинного.
Проверял на процедуре быстрой сортировки из Шустриков.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Почитал статью, весьма интересная, но хочется сделать замечание. Дело в том, что автор несколько неправильно применял, на мой взгляд, модификатор unsafe, потому у него результаты мало отличались. я попробовал применить его следующим образом:
заголовок функции сортировки:
unsafe public static void Sort(int* array, int len) {...}
место вызова этой функции:
unsafe
{
fixed(int* p = array)
{
Sort(p, n);
}
}
в результате у меня полностью unmanaged c++ выдал 681 вызов в секунду, а чистый C# выдал 650 ! согласитесь, отличие незначительное!