Lazy KoT
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору numetalist Цитата: не сильно быстродействием славиться | Из CLR via C# Рихтера: Цитата: Если вы тоже скептик, сами создайте приложение и проверьте его производи тельность. Кроме того, можете взять для этих целей какоенибудь нетривиальное приложение от Microsoft или другого разработчика. Я думаю, вас удивит, насколько быстродействие высоко на самом деле. Трудно поверить, но многие (включая меня) считают, что управляемые при ложения могут работать производительнее неуправляемых, и тому есть масса причин. Взять хотя бы тот факт, что превращая ILкод в команды процессора в период выполнения, JITкомпилятор располагает более полными сведениями о среде выполнения, чем компилятор неуправляемого кода. Вот особенности, ко торые позволяют управляемому коду «опередить» неуправляемый. JITкомпилятор может обнаружить факт выполнения приложения на Pentium 4 и сгенерировать машинный код, полностью использующий все преимущества особых команд этого процессора. Неуправляемые приложения обычно ком пилируют в расчете на среднестатистический процессор, избегая специ фических команд, которые заметно повышают производительность приложе ния на новейших процессорах. JITкомпилятор может обнаружить, что определенное выражение на конкрет ной машине всегда равно false. Например, посмотрим на метод с таким кодом: if (numberOfCPUs > 1) { ... } Здесь numberOfCPUs — число процессоров. Код указывает JITкомпилято ру, что для машины с одним процессором не нужно генерировать никаких машинных команд. В этом случае машинный код оптимизирован для конкрет ной машины: он короче и выполняется быстрее. CLR может проанализировать выполнение кода и перекомпилировать ILкод в команды процессора во время выполнения приложения. Перекомпилирован ный код может реорганизовываться с учетом обнаруженных некорректных прогнозов ветвления. Это лишь малая часть аргументов в пользу того, что управляемый код будуще го будет исполняться лучше сегодняшнего неуправляемого. Как я сказал, произ водительность и сейчас очень неплохая для большинства приложений, а со вре менем ситуация только улучшится. | Но если уж очень хочется - посмотри на DllImport. LuckyStrike 1) Код: for (double i = 0.1; i < 1.2; i+= 0.1) { Console.WriteLine(Math.Sin(i)); } Console.ReadKey(); | 2) Код: Convert.ToInt32(string.Format("2{0}2", number)); | ((; Ну или если с числами только: Код: double number = 33777893; Console.WriteLine(2 * Math.Pow(10, Math.Floor(Math.Log10(number)) + 2) + number * 10 + 2); Console.ReadKey(); |
| Всего записей: 204 | Зарегистр. 10-09-2004 | Отправлено: 18:23 18-02-2009 | Исправлено: Lazy KoT, 18:47 18-02-2009 |
|