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

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

Страницы: 1 2 3 4
infouser8Пользовательwww12 мар. 20100:49#45
А во тест
i5 750 @ 2.67 Ghz
Speed compare: 200000000 dynamic cast
-----------------------------------------------
dynamic_cast 27.65M casts per second (r:006E15C0)
reflection::cast 200.20M casts per second (r:006E15C0)

reflection::cast faster that dynamic_cast x7.24
ZooLooПостоялецwww29 апр. 201015:52#46
Debian Linux 5.00 CPU: Intel E6800 @ 3.00 Ghz
g++ (Debian 4.3.2-1.1) 4.3.2
Speed compare: 200000000 dynamic cast
-----------------------------------------------
dynamic_cast 44.54M casts per second (r:0x804f428)
reflection::cast 256.41M casts per second (r:0x804f428)

reflection::cast faster that dynamic_cast x5.76
FaverisПостоялецwww20 янв. 201215:55#47
Извините за некропостинг, но может у кого-то остался архив с исходниками данной либы? Сайт автора не работает, скачать по ссылке выше по треду невозможно.
Sergey MakeevПостоялецwww20 янв. 201221:54#48
да, надо бы заплатить за домен :)

http://dl.dropbox.com/u/4736419/reflectionLibrary_v4.rar

FaverisПостоялецwww21 янв. 20120:34#49
Спасибо )
FaverisПостоялецwww22 янв. 201216:32#50
Похоже тут в библиотеке ошибка небольшая с ассёртом, оповещающем о возникновении коллизии.
assert(strcmpFast(c_str(), size(), other.c_str(), other.size()) == 0 && "Need update hash function, collisions must be resolved !");

strcmpFast возвращает true, если строки равны, поэтому == 0 нужно убрать. Ты, наверное, когда стандартный strcmp() поменял на strcmpFast(), забыл условие переделать )
Sergey MakeevПостоялецwww22 янв. 201219:14#51
Faveris
> стандартный strcmp() поменял на strcmpFast(), забыл условие переделать )

ага :) все так, надо ==0 убрать

Sbtrn. DevilПостоялецwww22 янв. 201222:34#52
А текст документа-то простым смертным так и не доступен. :(
Igor'Постоялецwww22 янв. 201223:23#53
Мой вариант:
hpp http://www.everfall.com/paste/id.php?p8eff666jchv
cpp http://www.everfall.com/paste/id.php?vipcny8p6qr4
пример
/*
===========================================================================

Enforcer-Engine Source Code
Copyright (C) 2011-2012 Enforcer-Engine Team. 

===========================================================================
*/

#include "efEngine.h"

int main(int, char**) {
  efObject* object = new efObject();
  efReader* reader = new efReader();

  if(object->IsA(efObject::Type)) printf("ok...\n");
  else printf("fail...\n");

  if(!object->IsA(efReader::Type)) printf("ok...\n");
  else printf("fail...\n");

  if(reader->IsA(efReader::Type)) printf("ok...\n");
  else printf("fail...\n");

  if(!reader->IsA(efObject::Type)) printf("ok...\n");
  else printf("fail...\n");

  if(!object->IsDerived(efReader::Type)) printf("ok...\n");
  else printf("fail...\n");

  if(reader->IsDerived(efObject::Type)) printf("ok...\n");
  else printf("fail...\n");

  system("pause");

  efObject* c0 = reader->Cast<efObject>();
  efReader* c1 = object->Cast<efReader>(); // assert, bingo

  return 0;
}
VinilПостоялецwww23 янв. 201223:00#54
С PowerPC засада какая-то (хотя чёрт - я ж в 32-битном режиме скомпилил).
MacOS X 10.5  CPU: PowerPC G5 @ 2.00 Ghz
g++ (Apple 4.2.1)  (-O2, -O3 - результаты похожие)

Speed compare: 200000000 dynamic cast
-----------------------------------------------
dynamic_cast 32.61M casts per second (r:0x1001c0)
reflection::cast 26.09M casts per second (r:0x1001c0)

reflection::cast faster that dynamic_cast x0.80

А рядом виндовс-коробка:

Win7 x64  CPU: AMD Athlon 7850+ @ 2.8 Ghz
g++ (equation.com 4.6.0)  (-O2)
Speed compare: 200000000 dynamic cast
-----------------------------------------------
dynamic_cast 20.45M casts per second (r:000000000047FDD0)
reflection::cast 101.78M casts per second (r:000000000047FDD0)

reflection::cast faster that dynamic_cast x4.98

Страницы: 1 2 3 4

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

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

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