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

C++

Войти
Регистрация
Восстановить пароль
 
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
#1

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

24.07.2014, 18:12. Просмотров 506. Ответов 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;
}
Честно говоря я не сразу вкурил суть, когда первый раз увидел, потом разобрался.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 18:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Интересный пример оптимизации (C++):

очень интересный баг - C++
Если кто-нибудь догадается в чем ошибка, то скажите. Ошибку я уже исправил, но не знаю, почему не работает этот код: #include...

Интересный вопрос - C++ Builder
Ув. программисты,сегодня с преподователем в университете состоялся интресеный диалог.в ходе которого он мне заявил точ не одна функция...

Интересный вопрос! - C++ Builder
Как будет работать программа если я изменю условие! if (fV&gt;= 0 &amp;&amp; fAlfa&gt;= 0 &amp;&amp; fAlfa&lt;= 180) просто на if 15 в приведенной ниже...

Интересный вопрос по тренарному оператору (?:) - C++ Builder
Вот два варианта тренарного оператора (задача, - аля возведение в модуль... избавление от минуса) //вариант 1 (result&gt;0) ? ...

Имеется интересный небольшой код на Дельфи. Надо переписать его на С++. - C++ Builder
Подскажите как преобразовать данный код... А вот и сам код: //объявляем структуру type spektr = record Re : double; Im :...

Метод оптимизации - C++ Builder
Здравствуйте. Помогите перевести программу из консоли в форму, пожалуйста. Еще мне нужно на графике изобразить переход точек,которые...

8
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 18:30 #2
Возможно, данный пример очень укорочен, что я не вкурил профита. Оптимизация чего здесь представлена?
0
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 18:46  [ТС] #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Оптимизация чего здесь представлена
Нужное значение храниться не в отдельной переменной, а непосредственно в this.
0
Vourhey
Почетный модератор
6485 / 2259 / 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 секунд
Не, я не спорю, что это интересный код. Код любопытный, это да.
0
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 19:06  [ТС] #5
Цитата Сообщение от Vourhey Посмотреть сообщение
В чем будет выигрыш между каким-нибудь:
технически выигрыша не будет, кроме того, что Number это говорящий тип, хотя и используются только указатели на него.
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 19:08 #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
хотя и используются только указатели на него
Ну да, он больше ни на что не годится
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,952
Записей в блоге: 17
26.07.2014, 16:07 #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну да, он больше ни на что не годится
А как же запутывание кода ?
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 19:33 #8
На мой пезанский вкус, никакая оптимизация не может быть оправдана таким запутыванием кода. Если бы мне кто ещё показал, какая польза от такой оптимизации.
0
MrGluck
31.07.2014, 19:24     Интересный пример оптимизации
  #9

Не по теме:

Впень!

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 19:24
Привет! Вот еще темы с ответами:

Теория оптимизации - C++ Builder
Доброго! В интернете натолкнулся на статью бывалого прогера, который говорит несколько простых правил оптимизации кода Си. Делал опыты по...

Вопрос оптимизации программы - C++ Builder
Программу сообрал, но как показывает практика, она после некоторой стабильной работты начинает пожирать системные ресурсы Вопрос как...

Отключение оптимизации и векторизации компилятора? - C++ Builder
Скажите,возможно ли в XE2 отключить оптимизацию и векторизацию.

интересный пример - Математический анализ
помогите пожалуйста решить матан. постройте график функции y=||2x^2+3|+|x-2|+|3x-5||


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

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

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