Войти
ПрограммированиеФорумОбщее

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

Страницы: 1 2 3 4 Следующая »
#0
2:48, 29 дек. 2009

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

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


#1
2:48, 29 дек. 2009

По моему, метод Is(const char*) надо сделать виртуальным и константным...

#2
13:07, 29 дек. 2009

Pushkoff
> По моему, метод Is(const char*) надо сделать виртуальным и константным...

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


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

#3
13:20, 29 дек. 2009

я вчера в подсказки выложил свой вариант, но без рефлекшена...

#4
13:25, 29 дек. 2009

Pushkoff

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

#5
13:26, 29 дек. 2009

ее еще не опубликовали...

#6
14:05, 29 дек. 2009

Pushkoff
> я вчера в подсказки выложил свой вариант, но без рефлекшена...
> ее еще не опубликовали...

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

#7
14:28, 29 дек. 2009

Nikopol
ну сегодня вечером попробую еще раз...

#8
15:28, 29 дек. 2009

Nikopol
Ты просто не всё видишь. Не та ссылка у тебя. В приват смотри.

#9
16:55, 29 дек. 2009

А почему только для участников? :(

#10
19:29, 29 дек. 2009

MarkoPolo
> А почему только для участников? :(
Действительно, к чему сделаны все эти ограничения? Я считаю, что статусы должны помогать, а не создавать ограничения. А так тогда еще и оплату введите: чтобы стать участником на один месяц, отправьте смс на номер ***, стоимость услуги 150 руб.

#11
19:36, 29 дек. 2009

ud1
бугак, давно уже:
http://www.gamedev.ru/help/donate
>В примечании укажите свои данные, например, id вашей регистрации на сайте и ник, чтобы мы могли выдать Вам статус участника развития ресурса GameDev.ru в эквиваленте 15 WMZ за каждый год.

#12
12:09, 30 дек. 2009

мда уж - синтетика в тестах так и прет

замени названия классов 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 . . .
#13
12:10, 30 дек. 2009

в дебаг сборке на 1000000 итераций отношение dynamic_cast / костыль с блэкджеком - 0.01  [ 12.82M  / 0.14M ]

#14
12:58, 30 дек. 2009

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 Следующая »
ПрограммированиеФорумОбщее

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