![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Balu
Речь идет о том, что в C# нет понятия deep immutability. Т.е. если объект reference-типа содержит методы, изменяющие его состояние, то нет никаких способов, передав его в качестве параметра метода, защитить его от изменения. Приходиться писать wrapper. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: нет Всего: 10 |
А вот мне лично нравится ассемблер.
Я много раз занимался тем, что переводил разные фрагменты программы в ассемблерные вставки, а переведенные фрагменты закомментировал. И программа выполнялась в 1.5 раза быстрее ! Потому что процессор выполнял мой код а не компилеровский. Пускай там что хотят пишут про разные языки, про удобства или неудобства их использования, а мне как то по барабану какой там синтаксис. Железо не знает синтаксиса. Хех. Говорят. "А вот давайте посмотрим, как это сделано в C++, а как в C#". Ну давайте посмотрим. Смешно, блин, смотреть от мысли что все равно кристалл процессора выполняет микрооперации. Для тех кто не знает что такое микрооперация могу сообщить новость. Процессор декодирует машинные инструкции в микрооперации, то есть ещё больше разбивает код. Вот. так вот я как посмотрел в окно CPU и стало не в кайф - какой же там несовершенный код. В общем в цикле изменяющая свое значение переменная раз-поз-раз с каждым проходом цикла сохраняет его из регистра процессора в память и из памяти опять загружает в регистр. А зачем ? Ведь это значение могло бы хранится в регистре все время и этот регистр ничем не занят. Да и вообще много приемов есть оптимальности. Вот например, абсолютно параллельное выполнение целочисленных и вещественных команд. Эти два типа команд выполняются разными участками кристалла процессора и эти участки кристалла могут работать параллельно, если на конвеере АЛУ будут попеременно команды целоч. и вещественные. А команды расширения АЛУ SSE2 - это же вообще рулёз. За один такт выполняются сразу четыре арифметические операции или логические. Для тех кто незнаком вкратце объясню - операнды хрянятся в 128-разрядных XMM-регистрах в упакванном виде - 4 целых 32-битных числа может поместится. Вот допустим есть пара таких регистров, или регистр и 128-битная ячейка памяти. И есть команды для параллельного выполнения операций. Ускорение - в 4 раза. Ну куда там тем языкам ЯВУ до такого... ? Хотя фирма INTEL разработала свой компилятор для C под процессоры Pentium 4, и утверждает, что он учитывает всю специфику оптимизации по Пенёк. Ну так вот вы теперь можете мне ответить - не хочешь не пиши на C#. Правильно. А какой кайф от того, что понимаешь что твоя прога будет выполняться не АЛУ напрямую, а ещё через компилятор JIT проходить ? Так же не интересно. Я в общем привык писать под проц с мыслью о том что он не будет работать как мудак. А тут ещё 2 компилера... Ну в общем, что там Anders Hejlsberg про это думает ? Как там насчет быстродействия ? Весь кайф портится, не так ли ? Ответ тут только один. Надо писать DLL на Асм и связывать их с кодом на C#. Насчет отладки Асм-кода - даже не знаю пока хорошего решения. Наверно писать надо сначала в C++ а потом переводить в C#. Что худшего в C++ ? Генерится код в пол метра минимум, даже если на форме нет ни одного контрола. А по какой причине столько кода ? есть вероятность того, что он выполнится ? Microsoft стремится сделать программы кросплатформенными. ................................................. -------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
Дружище! Один топик - один вопрос! Не нарушайте пожалуйста правила форума. -------------------- |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Модератор: Сообщение скрыто. -------------------- ![]() |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
-------------------- |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |