The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Анализ влияния ключевого слова final на производительность программ C++, opennews (??), 23-Апр-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


60. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от Аноним (60), 23-Апр-24, 22:40 
Что-то я не понял твою мысль.

class base {
public:
    virtual void f() = 0;
};

class derived1 : public base {
public:
    virtual void f() {}
};

class derived2 final: public derived1 {
public:
    virtual void f() {}
};

int main()
{
    base *p = new derived2;

    p->f();  
    return 0;
}


По-твоему тут vtable не будет использоваться?

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

75. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от Аноним (75), 24-Апр-24, 00:37 
Даже с MSVC не будет.
https://godbolt.org/z/aWGr639ej
Ответить | Правка | Наверх | Cообщить модератору

84. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от n00by (ok), 24-Апр-24, 08:36 
Осталось ещё убрать final и посмотреть на листинг, для полного просветления.
Ответить | Правка | Наверх | Cообщить модератору

91. "Анализ влияния ключевого слова final на производительность п..."  +1 +/
Сообщение от Аноним (91), 24-Апр-24, 12:40 
Тот пример действительно не покажет эффект от `final`, если компилятор умеет запоминать тип присвоенного ссылке или указателю объекта, а не ограничивается типом самой ссылки или указателя. Куда лучше тут подходит https://godbolt.org/z/aPKxEWMz5
Ответить | Правка | Наверх | Cообщить модератору

102. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от n00by (ok), 25-Апр-24, 13:27 
Подходит лучше, пока нет определения функций-членов. При lto может быть проанализирован поток исполнения и разницы не окажется. Но даже если и окажется, то главный вопрос - почему вдруг с final медленнее, а не быстрее.
Ответить | Правка | Наверх | Cообщить модератору

89. "Анализ влияния ключевого слова final на производительность п..."  +2 +/
Сообщение от siga (ok), 24-Апр-24, 12:18 
придумать такой сценарий, когда ключевое слово `final` приводит к девиртуализации вызова, в принципе несложно https://godbolt.org/z/b9d7GhjxW

а вот придумать ситуацию, когда оно сказывается негативно, уже сложнее. мне на ум пока приходит только невозможность применения EBCO https://godbolt.org/z/hE9aoc8Kc

Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

106. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от fuggy (ok), 25-Апр-24, 17:48 
Я пытался разобраться, но тут нет разницы в ассемблере между clang и gcc c final и без в первом случае. Откуда тогда разница в производительности берётся? Либо нужно более сложный кейс сравнивать.
Ответить | Правка | Наверх | Cообщить модератору

107. "Анализ влияния ключевого слова final на производительность п..."  +/
Сообщение от n00by (ok), 26-Апр-24, 06:50 
Мне тут другое непонятно. Автор тестов тестировал на своей библиотеке. Получил результат, вызывающий вопросы. Почему он не посмотрел асм и не нашёл ответ сам? Я в подобных случаях всегда смотрел и подчас открывал удивительные для себя вещи.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру