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

Простая система событий на С++11 (комментарии) (5 стр)

Страницы: 14 5 6 7 8 Следующая »
#60
21:27, 10 дек. 2015

cNoNim
> ну и все расходимся
Создавать на каждый уникальный эвент свою unordered_map, да ещё и статически (превед проблемам с кастомными
аллокаторами и порядком уничтожения статических объектов) - это как-то не спортивно, а если эвентов много...

#61
21:55, 10 дек. 2015

Hybernaculum
т.е. ты только сейчас понял о чем код в статье?
unordered_map / list  оно там не принципиально, я его вставил только для того что бы убрать этот говнокод с remove_if
не более...
а все остальные вопросы можешь адресовать автору )

#62
21:59, 10 дек. 2015

0r@ngE
мы можем долго обсуждать, тот код которого в статье нет, но в данный момент это не так интересно
или ты думаешь мне больше нечего сказать по тому коду который есть? )
эт зря

    template <typename EventTrait>
    void RegisterEvent() {
        const std::size_t eventHash = get_event_trait_hash<EventTrait>();
        m_Events[eventHash] = std::make_unique<SpecEvent<EventTrait>>();
    }
template <typename T> inline std::size_t get_event_trait_hash() {
    static std::size_t result = 0;
    if (!result) {
        const char* traitName = get_event_trait_name<T>();
        std::hash<std::string> hasher;
        result = hasher(traitName);     // TODO: replace this with something platform-independent
    }
    return result;
}

тебе ни чего не говорит словосочетание hash collision?

#63
22:06, 10 дек. 2015

ладно не могу удержаться
> и благодаря хешу - EventSystem сможет пришедший ивент бросить.
> 3) Нет. Внутри get_event_trait_hash - static результат. Т.е. вычислен он будет лишь раз и затем будет отдан каждый вызов уже готовый. Если юзается GCC можно еще немного оптимизировать заюзав __builtin_expect
Изображение

#64
22:20, 10 дек. 2015

cNoNim
> т.е. ты только сейчас понял о чем код в статье?
Вы за темой вообще следите?

Много лишних сущностей, выделений памяти и синтаксического мусора

http://www.gamedev.ru/code/forum/?id=208411&page=3#m43

> все остальные вопросы можешь адресовать автору )
Вопросы адресованные к вам относятся к вашему варианту кода, поскольку "автор" ушёл в глубокую несознанку)

#65
22:26, 10 дек. 2015

cNoNim
А можно для тех, кто в танке,- в чём юмор?

#66
22:28, 10 дек. 2015

Hybernaculum
так я все что сделал поудалял лишние сущности в коде )

FordPerfect
ты unordered_map пользоваться тоже не умеешь?
что необходимо для использования чего либо в качестве ключа в unordered_map?

#67
22:38, 10 дек. 2015

cNoNim
Мы на ты не переходили вроде.

cNoNim
> тебе ни чего не говорит словосочетание hash collision?
А вам никто не говорил что пример это пример? Замените хеширующую функцию на свою, в чем проблема?

cNoNim
> ладно не могу удержаться
Недержание это плохо, держитесь подальше от наркотиков. Если вас слово хеш так смешит, может к врачу сходить?

#68
22:41, 10 дек. 2015

0r@ngE
RTFM!
Коллизия хеш-функции

#69
22:43, 10 дек. 2015

0r@ngE
какая хеш функция о чем вы?
как можно использовать хеш в качестве ключа?
вы наверное знаете тайную хеш функцию которая не дает коллизий на произвольной строке?
что вообще за бред?

#70
22:45, 10 дек. 2015

Ну что же вы всё обосрали? неужели так плохо?
(я тут статейку собирался запилить про применение рефлексии, но теперь передумал.)

#71
22:53, 10 дек. 2015

cNoNim
> какая хеш функция о чем вы?
> как можно использовать хеш в качестве ключа?
> вы наверное знаете тайную хеш функцию которая не дает коллизий на произвольной
> строке?
> что вообще за бред?

В теории колизии дают все хеш функции.
На практике, при достаточной длине строки и вменяемой хеш фукции колизий можно избежать.
Лично я использовал FNV-1a вариант в нескольких зашипленых проектах - колизий не наблюдалось, проекты принесли кучу денег. http://isthe.com/chongo/tech/comp/fnv/
Если сильно страшно - можно Murmurhash.
Да хоть SHA2 если совсем паранойя бьет.

#72
23:01, 10 дек. 2015

PVSector
> (я тут статейку собирался запилить про применение рефлексии, но теперь передумал.)
Пишите и не обращайте внимание. Всегда найдутся те кому помогла ваша информация. Если хоть одному человеку будет полезна - уже не зря старались.

PVSector
> Ну что же вы всё обосрали? неужели так плохо?
Да особо то не обосрали (кроме парочки личностей).
Вон тот же cNoNim вроде старается конструктивно коментировать, хоть его и заносит немного на поворотах, но это же живая дискуссия, люди редко совпадают во мнениях ;)

#73
23:03, 10 дек. 2015

0r@ngE
послушайте ) это какая то несуразица... вы наверное просто устали и поэтому не понимаете чего пишете
сколько бит у size_t?
какая нафиг достаточно длинная строка?
у вас там имя типа и все, проблемы с коллизиями есть и в git и практически везде хоть там sha2 используется хоть что,
но выставлять использование хеша фичей в коде который
> А вам никто не говорил что пример это пример
это конечно нонсенс )
при этом ведь я намекнул на более правильную реализацию хеширования и использования в качестве ключа type_index еще в 40 посте...
но ладно я понял, у вас же распределенная система события лолд ;)

так этот код пример чего?

#74
23:10, 10 дек. 2015

Так, я совсем туплю.
1. Юмор в #63 был строго про коллизии? С коллизиями понятно.
2. Чем type_index поможет?

Страницы: 14 5 6 7 8 Следующая »
ПрограммированиеФорумОбщее

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