OberonCore https://forum.oberoncore.ru/ |
|
Имеет ли смысл сравнивать алгоритмы на С#? https://forum.oberoncore.ru/viewtopic.php?f=27&t=3987 |
Страница 1 из 1 |
Автор: | Info21 [ Пятница, 08 Июнь, 2012 21:43 ] |
Заголовок сообщения: | Имеет ли смысл сравнивать алгоритмы на С#? |
Есть любители сравнивать простенькие циклы, записав их на Шарпе, в котором -- ко всему прочему -- нет ни удобного LOOP-EXIT, ни многоветочного IF. Даже если там есть оптимизация, она, надо ожидать, не настроена на распознавание этих управляющих структур. Из чего следует, что в генерируемом коде вероятен оверхед. Кстати: процессор может пред-вычислять две ветки одного IF-а, но как он справится с двумя вложенными IF-ами? Меня здесь не интересует разница между алгоритмами, разными по идее (как простой поиск и Бойер-Мур). Чисто вопросы оптимизации низкого уровня. Кто-нить может прокомментировать? |
Автор: | Евгений Темиргалеев [ Пятница, 08 Июнь, 2012 23:04 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Теоретически оверхед возможен уже потому, что используется промежуточный язык --- чем дальше набор инструкций целевого CPU от CIL, тем больше оверхед. Подробнее стоит поглядеть диссертацию Франца (http://oberoncore.ru/library/code-gener ... e_software). Там IL рассматриваются, а .NET транслирует в MSIL (http://en.wikipedia.org/wiki/Common_Int ... e_Language). |
Автор: | Info21 [ Пятница, 08 Июнь, 2012 23:24 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Евгений Темиргалеев писал(а): Теоретически оверхед возможен уже потому, что используется промежуточный язык --- чем дальше набор инструкций целевого CPU от CIL, тем больше оверхед. Да. но там наворочено черте-что. Unsafe код и т.п. -- может, там как-то без промежуточного кода?Или всегда через ... промежуточный код? ---- Что подобные тесты практически бессмысленны, хорошо известно. Любопытство чисто мелкое техническое -- может, там что-то есть, иначе трудно объяснить, почему людям в голову такие идеи приходят, на первый взгляд просто дикие. |
Автор: | Евгений Темиргалеев [ Суббота, 09 Июнь, 2012 10:32 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Info21 писал(а): Да. но там наворочено черте-что. Unsafe код и т.п. -- может, там как-то без промежуточного кода? Деталей не знаю, потребности не было. Модель: исходник -> CIL -> ... -> код целевого процессора. Вроде можно сделать непереносимый кодовый файл, содержащий сразу код целевого процессора, но мне кажется маловероятным, что для него будет использована особенная прямая компиляция из исходника, в обход CIL.
Или всегда через ... промежуточный код? |
Автор: | Валерий Лаптев [ Суббота, 09 Июнь, 2012 10:54 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Info21 писал(а): Евгений Темиргалеев писал(а): Теоретически оверхед возможен уже потому, что используется промежуточный язык --- чем дальше набор инструкций целевого CPU от CIL, тем больше оверхед. Да. но там наворочено черте-что. Unsafe код и т.п. -- может, там как-то без промежуточного кода?Или всегда через ... промежуточный код? unsafe - это работа с указателями, "ручное" управление динамической памятью почти точно такое же, как в С++. |
Автор: | Info21 [ Суббота, 09 Июнь, 2012 11:47 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Валерий Лаптев писал(а): unsafe - это работа с указателями, "ручное" управление динамической памятью почти точно такое же, как в С++. Но через промежуточный код? или как?
|
Автор: | Info21 [ Суббота, 09 Июнь, 2012 23:18 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
В общем, всегда MSIL. Специалисты по оптимизирующим компиляторам над подобного рода тестами -- даже без MSIL -- издевались, когда я последний раз в Новосибирске на эти темы с ними просвещался. Думал, может, тут что-то скрыто новое, мало ли. Ни хрена тут не скрыто. Одна всё та же ... гениальность. |
Автор: | Валерий Лаптев [ Воскресенье, 10 Июнь, 2012 14:28 ] |
Заголовок сообщения: | Re: Имеет ли смысл сравнивать алгоритмы на С#? |
Додиез - это бывшая Java от Микрософта. Но Микрософт проиграл судебное дело по поводу авторских прав на Яву (поскольку Sun все запатентовала) и были вынуждены просто поначалу обозвать по-другому. А потом уже стали развивать в желаемом направлении. Поэтому там изначально не только MSIL, но даже просто байт-код модифицированный. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |