Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Простая реализация RTTI (run time type information) (комментарии)

Простая реализация RTTI (run time type information) (комментарии)

Поделиться
Страницы: 1 2 3 4 Следующая »
Sergey MakeevПостоялецwww29 дек. 20092:48#0
Простая реализация RTTI (run time type information) (комментарии)

Это сообщение сгенерировано автоматически.

PushkoffУдалёнwww29 дек. 20092:48#1
По моему, метод Is(const char*) надо сделать виртуальным и константным...
Sergey MakeevПостоялецwww29 дек. 200913:07#2
Pushkoff
> По моему, метод Is(const char*) надо сделать виртуальным и константным...

ох, как же я это писал давно :)


Вот, более продвинутое решение

PushkoffУдалёнwww29 дек. 200913:20#3
я вчера в подсказки выложил свой вариант, но без рефлекшена...
Sergey MakeevПостоялецwww29 дек. 200913:25#4
Pushkoff

А как посмотреть ? Я в подсказках искать не умею :) Просто глазами не нашел, дашь ссылку ?

PushkoffУдалёнwww29 дек. 200913:26#5
ее еще не опубликовали...
NikopolМодераторwww29 дек. 200914:05#6
Pushkoff
> я вчера в подсказки выложил свой вариант, но без рефлекшена...
> ее еще не опубликовали...

В неопубликованных нет ни одной от тебя.
Ты наверно что-то не то нажал.

PushkoffУдалёнwww29 дек. 200914:28#7
Nikopol
ну сегодня вечером попробую еще раз...
watВедущийwww29 дек. 200915:28#8
Nikopol
Ты просто не всё видишь. Не та ссылка у тебя. В приват смотри.
MarkoPoloПостоялецwww29 дек. 200916:55#9
А почему только для участников? :(
ud1Постоялецwww29 дек. 200919:29#10
MarkoPolo
> А почему только для участников? :(
Действительно, к чему сделаны все эти ограничения? Я считаю, что статусы должны помогать, а не создавать ограничения. А так тогда еще и оплату введите: чтобы стать участником на один месяц, отправьте смс на номер ***, стоимость услуги 150 руб.
JokerRПостоялецwww29 дек. 200919:36#11
ud1
бугак, давно уже:
http://www.gamedev.ru/help/donate
>В примечании укажите свои данные, например, id вашей регистрации на сайте и ник, чтобы мы могли выдать Вам статус участника развития ресурса GameDev.ru в эквиваленте 15 WMZ за каждый год.
opengl_extensionsПостоялецwww30 дек. 200912:09#12
мда уж - синтетика в тестах так и прет

замени названия классов foo -> foofoofoofoofoofoo , foo2 -> foo2foo2foo2foo2foo2

короче сделай подлиннее и получим:

foo3::typeClassName = 'foo3foo3foo3foo3foo3foo3'

foo created by name = 0x00032FC0, have className = 'foofoofoofoofoofoofoofoo'

className from base pointer = 'foo2foo2foo2foo2foo2foo2'


Reflection database content:
-----------------------------------------------
class name : 'foo3foo3foo3foo3foo3foo3'
  attr name:'foo3-attr int test', type 'int', inherited 0
  attr name:'foo-attr float test', type 'float', inherited 1
  attr name:'foo-attr int test', type 'int', inherited 1

class name : 'foofoofoofoofoofoofoofoo'
  attr name:'foo-attr float test', type 'float', inherited 0
  attr name:'foo-attr int test', type 'int', inherited 0

class name : 'foo2foo2foo2foo2foo2foo2'
  attr name:'foo2-int_attribue', type 'int', inherited 0


Metadata from pointer
-----------------------------------------------
  attr name:'foo-attr float test', type [1] 'float'
  attr name:'foo-attr int test', type [2] 'int'

Set all int attributes to 13
-----------------------------------------------
  set to 'foo3-attr int test'
  set to 'foo-attr int test'

Get all int attributes
-----------------------------------------------
  'foo3-attr int test' = 13
  'foo-attr int test' = 13

Speed compare: 60 000 000 dynamic cast
-----------------------------------------------
dynamic_cast 16.70M casts per second
reflection::cast 12.11M casts per second

reflection::cast faster that dynamic_cast x0.73
Press any key to continue . . .
opengl_extensionsПостоялецwww30 дек. 200912:10#13
в дебаг сборке на 1000000 итераций отношение dynamic_cast / костыль с блэкджеком - 0.01  [ 12.82M  / 0.14M ]
Sergey MakeevПостоялецwww30 дек. 200912:58#14
opengl_extensions
> мда уж - синтетика в тестах так и прет
>
> замени названия классов foo -> foofoofoofoofoofoo , foo2 -> foo2foo2foo2foo2foo2

а какой компилятор / проц ? у меня вот так получается:
на старом gcc (< 4) по идее может быть медленнее, т.к. на vc и gcc версии выше 3-шки, хеш строчек оптимизируется и считается весь в compile time, а на старых gcc в runtime.


вот, что получилось у меня:

Visual Studio 2005 version 8.0.50727.867 собрано в Release с /O2
                                         


процессор: AMD Athlon X2 3800+
===========================================

foo3::typeClassName = 'foo3foo3foo3foo3foo3foo3'

foo created by name = 0x00B018F8, have className = 'foofoofoofoofoofoo'

className from base pointer = 'foo2foo2foo2foo2foo2'


Reflection database content:
-----------------------------------------------
class name : 'foo3foo3foo3foo3foo3foo3'
  attr name:'foo3foo3foo3foo3foo3foo3-attr int test', type 'int', inherited 0
  attr name:'foofoofoofoofoofoo-attr float test', type 'float', inherited 1
  attr name:'foofoofoofoofoofoo-attr int test', type 'int', inherited 1

class name : 'foofoofoofoofoofoo'
  attr name:'foofoofoofoofoofoo-attr float test', type 'float', inherited 0
  attr name:'foofoofoofoofoofoo-attr int test', type 'int', inherited 0

class name : 'foo2foo2foo2foo2foo2'
  attr name:'foo2foo2foo2foo2foo2-int_attribue', type 'int', inherited 0


Metadata from pointer
-----------------------------------------------
  attr name:'foofoofoofoofoofoo-attr float test', type [1] 'float'
  attr name:'foofoofoofoofoofoo-attr int test', type [2] 'int'

Set all int attributes to 13
-----------------------------------------------
  set to 'foo3foo3foo3foo3foo3foo3-attr int test'
  set to 'foofoofoofoofoofoo-attr int test'

Get all int attributes
-----------------------------------------------
  'foo3foo3foo3foo3foo3foo3-attr int test' = 13
  'foofoofoofoofoofoo-attr int test' = 13

Speed compare: 60 000 000 dynamic cast
-----------------------------------------------
dynamic_cast 10.04M casts per second
reflection::cast 17.06M casts per second

reflection::cast faster that dynamic_cast x1.70

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр