Блеск и нищета ООП - страница 3

 
Integer:

Вообще-то не компилятор тестировался, а два метода решения одной задачи. Без разницы как гудит холодильник ууууу или ыыыыы, важно как он морозит. 

Высосанная из пальца проблема а шуму...

Виртуальные функции никогда не инлайнятся, поэтому с включенной оптимизацией сравнивать с простыми примерами нет смысла, если switch сделан хорошо. Это раз.

Кто говорил что ООП быстрее? Удобнее, логичнее, а вот быстрее вряд ли. Это два.

Не нравится не пользуйся.

 
Integer:
После того было еще два варианта тестирования, 2 - с непустыми функциями, 3 - с уникальными функциями, результаты аналогичные. Вариант 1 был еще проведен в C#, но результат был обратный.

Я видел эти варианты. И они тоже ложатся в схему инлайнинга и хорошо оптимизируются.

Вариант с C# показывает очередной ввод в заблуждение из-за непонимания работы оптимизатора кода. Код показан не был, да еще и дотнетовый компилятор имеет в несколько раз больше методов оптимизации, которые как орешки щелкают вырожденные случаи тестовых примеров. Я как раз привел пример простой случай конвертации виртуальной функции в обычную при простых случаях. У нас эта оптимизация (в простых случаях как этот тест) тоже будет включена и вы тоже увидите как "виртуальный" метод вдруг обгоняет прямой.

 
TheXpert:

Высосанная из пальца проблема а шуму...

Виртуальные функции никогда не инлайнятся, поэтому с включенной оптимизацией сравнивать с простыми примерами нет смысла, если switch сделан хорошо. Это раз.

Кто говорил что ООП быстрее? Удобнее, логичнее, а вот быстрее вряд ли. Это два.

Не нравится не пользуйся.

Да это и не проблема вовсе. Просто эксперимент с результатами и вывод.

Нравится, не нравится. Использовать медленное вместо быстрого не логично.

 
Renat:

Я видел эти варианты. И они тоже ложатся в схему инлайнинга и хорошо оптимизируются.

Вариант с C# показывает очередной ввод в заблуждение из-за непонимания работы оптимизатора кода. Код показан не был, да еще и дотнетовый компилятор имеет в несколько раз больше методов оптимизации, которые как орешки щелкают вырожденные случаи тестовых примеров. Я как раз привел пример простой случай конвертации виртуальной функции в обычную при простых случаях. У нас эта оптимизация (в простых случаях как этот тест) тоже будет включена и вы тоже увидите как "виртуальный" метод вдруг обгоняет прямой.

Кажется, какой бы результат у меня не получился, он будет неправильным и вводящим в заблуждение. 

- За что? 

- Индеец, сэр.

(xф Одинокий рейнджер) 

Как бы не стралася, пока никак не получается получить, чтобы через switch работало медленее, чем виртуальный метод. Старался, но извините, не получилось.

 

Здесь в приложении первый тест на C#. Здесь были результаты

Файлы:
test.zip  66 kb
 

Доказательства будут с другой стороны. Или опять только слова. 

По большому счету интересует только факты.

Хотя я и так знаю что ООП работает медленнее, но предоставляет вполне конкретные удобства

 
Vinin:

Доказательства будут с другой стороны.

Доказательства чего?
 
TheXpert:
Доказательства чего?
Андрей, у тебя желание появилось доказать что Дима не прав. Тогда приводи их
 

Зачем вам ООП, игрушки писать? )

 

В любом случае хорошо, что вопрос поднялся.

Мы постоянно работаем над улучшениями компилятора и его оптимизатора. Сейчас сконцентрируемся на оптимизации вызовов виртуальных методов (множество виртуальных методов можно превратить в прямые).

Причина обращения: