Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
#1

Интересный пример оптимизации - C++

24.07.2014, 18:12. Просмотров 475. Ответов 8
Метки нет (Все метки)

Привет!
Копаясь в OpenJDK наткнулся на довольно интересный подход (оптимизацию). Решил поделиться, кому-то может быть полезно в плане общего развития, а кому-то может быть просто любопытно.
Код, естественно, максимально упрощен для примера.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
enum number {ONE, TWO, THREE};
 
class Number
{
public:
    number as_number()
    {
        return (number)(long)this;
    }
};
 
int main()
{
    Number *one = (Number*) ONE;
    Number *two = (Number*) TWO;
    Number *three = (Number*) THREE;
    
    std::cout << (int)one->as_number() << " "
              << (int)two->as_number() << " "
              << (int)three->as_number() << std::endl;
}
Честно говоря я не сразу вкурил суть, когда первый раз увидел, потом разобрался.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 18:30     Интересный пример оптимизации #2
Возможно, данный пример очень укорочен, что я не вкурил профита. Оптимизация чего здесь представлена?
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
24.07.2014, 18:46  [ТС]     Интересный пример оптимизации #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Оптимизация чего здесь представлена
Нужное значение храниться не в отдельной переменной, а непосредственно в this.
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 18:56     Интересный пример оптимизации #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
Нужное значение храниться не в отдельной переменной, а непосредственно в this.
Нужное значение хранится в переменных с именем one, two и т. д.. В чем будет выигрыш между каким-нибудь:
C++
1
2
void *a = (void*)TWO;
std::cout<<(int)a<<...
Добавлено через 30 секунд
Не, я не спорю, что это интересный код. Код любопытный, это да.
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
24.07.2014, 19:06  [ТС]     Интересный пример оптимизации #5
Цитата Сообщение от Vourhey Посмотреть сообщение
В чем будет выигрыш между каким-нибудь:
технически выигрыша не будет, кроме того, что Number это говорящий тип, хотя и используются только указатели на него.
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 19:08     Интересный пример оптимизации #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
хотя и используются только указатели на него
Ну да, он больше ни на что не годится
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,920
Записей в блоге: 17
26.07.2014, 16:07     Интересный пример оптимизации #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну да, он больше ни на что не годится
А как же запутывание кода ?
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
27.07.2014, 19:33     Интересный пример оптимизации #8
На мой пезанский вкус, никакая оптимизация не может быть оправдана таким запутыванием кода. Если бы мне кто ещё показал, какая польза от такой оптимизации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 19:24     Интересный пример оптимизации
Еще ссылки по теме:

C++ Builder Интересный вопрос по тренарному оператору (?:)
Интересный момент в условных конструкциях C++
C++ Интересный вывод, инкремент и декремент в cout
C++ Посоветуйте интересный class
Среднее арифметическое (интересный вариант) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
31.07.2014, 19:24     Интересный пример оптимизации
  #9

Не по теме:

Впень!

Yandex
Объявления
31.07.2014, 19:24     Интересный пример оптимизации
Ответ Создать тему
Опции темы

Текущее время: 22:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru