Re: Сравнение производительности C# и C++
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.11.07 11:38
Оценка: 3 (2)
Здравствуйте, AndreyR7, Вы писали:

AR>Код на C++ работал в 9 (!) раз быстрее чем аналогичный на шарпе.


Мне достаточно было посмотреть на ассемблерный код, который генерирует JIT, и все сразу стало понятно и без тестов. Смотреть Оптимизация в .NET]тут[/url].

Если тестировать каждый отдельный компонент, то результаты тестирования сравнимы. Ибо никто же не будет тестировать inline метод с обычным вызовом? Но когда все в начинает работать в комплексе, то...

Кстати, пресловутых преимуществ работы на другой архитектуре я не заметил Новые команды почти не используются (ибо это зачастую либо экзотика, либо надо изначально писать код под эти команды). Более того, смотрел на то, что генерирует .NET для 64 бит. Получаем:

1. По стандарту вызова метода, параметры передаются в регистрах.
2. JIT компилятор упорно размещает переменные производные от class в стеке (может это надо для сборки мусора или еще чего, не знаю).
Поэтому, при вызове метода происходило следующее
1. Аргументы копировались в регистры
2. Вызов функции
3. Инициализация cтека внутри функции
4. Копирование аргументов из регистров в стек
5. Выполнение кода функции
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.