powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Virtual method + Exceptions in C++
25 сообщений из 83, страница 2 из 4
Virtual method + Exceptions in C++
    #39648863
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen....
и скорее всего нужные методы в нужный момент становятся невиртуальными
Это как так?
Был виртуальный.... раз ...... и уже невиртуальный?

Это в соседнем топике слово virtual обсуждается. Давайте не будет заново?
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648864
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevsemen.s.semen....
и скорее всего нужные методы в нужный момент становятся невиртуальными
Это как так?
Был виртуальный.... раз ...... и уже невиртуальный?

Это в соседнем топике слово virtual обсуждается. Давайте не будет заново?

Да был виртуальный и вдруг бабах и стал невиртуальным
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648866
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovP.S.
Вы правда думаете, что разработчики JVM это такие лохи, которые чёт-там для какой-то фигни мутят?В Java и C# прикручена куча проверок - на тип, на память... Это тоже дополнительные накладные расходы.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648867
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБыл виртуальный.... раз ...... и уже невиртуальный?... и уже встроенный.
Одна из простейших, хотя, разумеется, не всегда возможных оптимизаций JIT.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648869
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devBasil A. SidorovP.S.
Вы правда думаете, что разработчики JVM это такие лохи, которые чёт-там для какой-то фигни мутят?В Java и C# прикручена куча проверок - на тип, на память... Это тоже дополнительные накладные расходы.

JIT все ненужное отключит

Там только одно зло - GC
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648877
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenда кто б спорил

а невиртуальные есть ? C# Language Specification 5.0 , параграф 1.6.6.3 (Static and instance methods).
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648878
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen....
JIT все ненужное отключит
...

Раньше в России на царя батюшьку надеялись. Царь батюшка прикажет - и все станет хорошо
Теперь на JIT. Похоже царь-батюшька уже не котируется ((((

Basil A. SidorovLeonid KudryavtsevБыл виртуальный.... раз ...... и уже невиртуальный?... и уже встроенный.
Одна из простейших, хотя, разумеется, не всегда возможных оптимизаций JIT.
Что бы virtual сделать обычным, нужно 100% знать тип объекта. Т.ч. тут скорее "не всегда возможных". Скорее возможно только для недавно созданных экземпляров объектов в той же самой области видимости. IMHO

P.S.
sql.ru преврашается в спорт-лото. Ждем, когда наконец появится тема про Бермудский треугольник
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648895
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devкуча проверок - на тип, на память... Это тоже дополнительные накладные расходы.Я вас умоляю - копайтесь в сях и не лезьте туда, где вы не копенганен. Ну вот совсем не копенгаген.

P.S.
Конечно, лохи, разрабатывающие всякую фигню живут в пещерах, при свечах ...
Не ведают они света истины, проливающегося со страниц форума ...
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648924
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devsemen.s.semenТак это и будет C++. В структурах на Си методы не объявишь.
Так там выше про С а не С++ ))
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39648997
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про исключения честно сознаюсь что не в курсе откуда тормоза из-за них (просветите кому не лень), а про виртуальные методы уже написали, повторюсь, прочитать адрес перехода и перейти по этому адресу это элементарная операция, почти бесплатная, т.е. на производительность почти не повлияет.

Другое дело что вместо вызова невиртуального метода его код инлайнится в место вызова, тут - да, выгоды побольше, не требуется пуш/поп регистров в стэк. Но и это не панацея, если вызываемый код содержит поболее букав чем "return ...".

ИМХО нынче главные тормоза из-за многопоточного доступа к общим данным, как следствие синхронизация кэшей ядер проца и т.д., это бОльшие тормоза чем вышеописанные проблемы.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649028
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПро исключения честно сознаюсь что не в курсе откуда тормоза из-за них (просветите кому не
лень)

https://stackoverflow.com/questions/15670169/what-is-difference-between-sjlj-vs-dwarf-vs-seh
https://gcc.gnu.org/wiki/WindowsGCCImprovements
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649067
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen..."В высоконагруженном проекте не используют...

в высоконагруженном проекте сначала делают правильную логику, на требуемом от задачи и расклада языке. А уж потом профилируется и убираются(читай переписываются) те места которые критичны ко времени выполнения.

Если изначально начать с жёстких постулатов, то можно не разглядеть(за лесом постулатов) про бОлее стройную логику или решать не ту задачу, с ослиным упрямством.

Например есть рекомендация по развёртыванию циклов. Надеюсь вы не начинаете программировать с копипасты тела цикла указанное кол-во раз???


(круглый)
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649069
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В гугле на ряде проектов строго требуется неиспользовать исключения и уходить от виртуальных методов
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649075
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen...на ряде проектов...

ключевые слова...
т.е. ОТ ЗАДАЧИ. полностью с этим согласен... сначала задача, всё остальное - вторично...

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

голова дана чтоб думать, а не тупо расшибать лоб по требованию...
первична архитектура. оптимизация вторична.

(круглый)
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649081
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenВ гугле на ряде проектов строго требуется неиспользовать исключения и уходить от
виртуальных методов

Если в гугловском Го виртуальные методы и исключения невыносимо тормозят, то... это
проблема гугля.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649104
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenТам есть невиртуальные методы ?Нету

semen.s.semenРечь шла об ultra low latency проектах с борьбой за микрос и даже наносекунды

Это два фактора (виртуальные методы и исключения) без которых в принципе можно обойтись и которые вносят оверхед в производительность

Давайте разбираться. В ассемблере можно увидеть, что не виртуальный вызов - это просто вызов, а виртуальный вызов - это одно вычисление смещения, и потом вызов. Т.е. отличается на пару инструкций. Если речь про пикосекунды, тогда да, иначе пофиг, как мне думается.

С исключениями сложнее, в точке try запоминаются адреса выходов, и в случае исключительной ситуации, просто туда делаются переходы. Ну и там ещё должны деструкторы позваться (ну они в любом случае позовутся), поэтому тоже оверхеда там не вижу.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649128
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenПонеслась ...


Ох зря я эту темку создал )

именно
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649131
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devsemen.s.semenпропущено...
Там есть невиртуальные методы ?Не помню. Последний раз общался с Java лет 10 тому назад.

Нет, там невиртуальных методов нет.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649156
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПро исключения честно сознаюсь что не в курсе откуда тормоза из-за них (просветите кому не лень)Я читал у Мейерса.
Если вкратце, то в плюсах, объект, созданный на стеке, существует только в области (своей) видимости, а за уничтожение объекта отвечает деструктор, автоматически вызываемый компилятором "на закрывающей скобке".
Исключение "разворачивает" стек, "покидая" многие области видимости, поэтому необходим код, организующий вызовы деструкторов.
Кроме того, для обеспечения работы с объектом в catch-блоке, объект приходится копировать, что тоже не уменьшает объём кода и время исполнения.
Из-за ограничений копирования в этом случае Мейерс рекомендует всегда перехватывать исключение по ссылке на объект.

P.S.
В Java, где освобождением памяти объектов занимается сборщик мусора, этой проблемы нет.
Объект "потерялся" потому, что на него нет ни одной (нециклической) ссылки? Сборщик мусора приберётся. Со временем.
Но, по этой же причине, нельзя организовать неявное освобождение ресурсов в деструкторе, которого нет и вся очистка делается в явных finally-блоках.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649160
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНет, там невиртуальных методов нет.В Java, невиртуальным является любой метод с модификаторами private или final. Просто по определению.

P.S.
Если вы чего-то не знаете о малознакомой вам среде, это ещё не значит, что "ничего такого" в этой среде нет.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649199
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovневиртуальным является любой метод с модификаторами private или finalСтатические методы тоже невиртуальные.
Более того, при вызове переменная.метод(), метод будет выбран по объявленному, а не по фактическому типу переменной.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649342
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИз-за ограничений копирования в этом случае Мейерс рекомендует всегда перехватывать исключение по ссылке на объект.


Ну не из-за этого же...
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649344
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВ Java, где освобождением памяти объектов занимается сборщик мусора, этой проблемы нет.
Объект "потерялся" потому, что на него нет ни одной (нециклической) ссылки? Сборщик мусора приберётся. Со временем.
Но, по этой же причине, нельзя организовать неявное освобождение ресурсов в деструкторе, которого нет и вся очистка делается в явных finally-блоках.

ЭТОЙ проблемы нет. Зато есть ДРУГИЕ проблемы.
Вызов finally-блоков.
Необходимость сборки мусора.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649346
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovMasterZivНет, там невиртуальных методов нет.В Java, невиртуальным является любой метод с модификаторами private или final. Просто по определению.

P.S.
Если вы чего-то не знаете о малознакомой вам среде, это ещё не значит, что "ничего такого" в этой среде нет.

Так я же знаю.
Там все методы виртуальные.
...
Рейтинг: 0 / 0
Virtual method + Exceptions in C++
    #39649355
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chapter 6. The Java Virtual Machine Instruction Sets
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html

там есть:
invokedynamic
invokeinterface
invokespecial
invokestatic
invokevirtual

Если "все методы виртуальные", зачем столько инструкций? )))
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Virtual method + Exceptions in C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]