Который C++ предупреждает/вставляет о библиотеке, я должен выбрать?

37
задан kshahar 4 October 2016 в 11:43
поделиться

6 ответов

Во-первых, попробуйте повышением:: сигнал так или иначе. Не предполагайте, что это не будет достаточно быстро, пока Вы не попробуете в своем конкретном случае, который является Вашим приложением

, Если это не будет достаточно эффективно, возможно, что-то как , то FastDelegate удовлетворит Вашим потребностям? (я did'nt пробуют его, но слышали, что это было хорошее решение в некоторых случаях где повышение:: сигнал, кажется, не подходит).

Так или иначе, если в Вашем приложении используют сигнал каждый кадр, может стоить для замены сигнальной системы чем-то более простым, как контейнер, которые содержат объекты/функторы, которые назовут каждым кадром. Сигнал более сделан позволить непосредственное управление "событиями", чем сделать цикл цикла динамичным (позволяющий изменение функций названный каждым кадром). (Я имею мое собственное решение (ОБНОВЛЕНИЕ: это очень старо и архаично теперь), что я в большой степени использую в игре, и например у меня нет проблемы с производительностью, поэтому возможно, что-то подобное могло помочь).

18
ответ дан 27 November 2019 в 04:50
поделиться

Я использовал libsigc ++ прежде, и это было довольно просто. Я не думаю, что это имело бы много в способе потерь производительности, и действительно я учился любить использовать слоты вместо указателей функции в нескольких местах.

Одна вещь знать состояла в том, что по состоянию на прошлый раз я использовал его (2 + несколько лет назад), это было ограничено макс. из шести параметров, передаваемых посредством соединений.

у меня нет опыта с библиотекой повышения, таким образом, я не могу помочь Вам там.

3
ответ дан 27 November 2019 в 04:50
поделиться

Очень, очень быстрая библиотека событий на формах Gamedev.net

При профилировании некоторого кода я работал недавно, я был удивлен и встревожился, увидев boost :: сигналы функции, плавающие наверху. За те из вас, кто не знает, boost :: signal - замечательно полезный библиотека сигналов / слотов, которые можно использовать наряду с boost :: bind для обработка событий на основе делегатов, например можно увидеть в C #. Он крепкий, функциональный и гибкий. Это также, Я научился невероятно ужасающе медленно. Для многих людей кто использует boost :: сигналы, это нормально потому что они очень редко называют события. Я звонил по несколько событий за кадр на объект, с предсказуемыми результатами.

Итак, я написал свой собственный. Немного меньше гибкий и функциональный. Это оптимизирован под то, как все стремятся фактически использовать события. И событие призыв от пятнадцати до восьмидесяти раз быстрее, чем boost :: signal.

см. ссылку

15
ответ дан 27 November 2019 в 04:50
поделиться

Те двое, что вы перечислили, - единственные, о которых я знаю. Все, что я видел, показывает, что libsigc ++ демонстрирует максимальную производительность. Как вы видели в сравнении, есть некоторые случаи, когда синтаксис boost немного красивее, но совсем немного.

Я лично использовал libsigc ++ и доволен этим. Libsigc ++, похоже, используется гораздо большим количеством проектов. Беглый взгляд в моем диспетчере пакетов показывает более 100 проектов, зависящих от libsigc ++ 2. На мой взгляд, одного этого достаточно, чтобы склонить чашу весов, особенно с учетом преимущества в производительности и отсутствия других существенных отличий.

Я говорю libsigc ++ 2.

5
ответ дан 27 November 2019 в 04:50
поделиться

Я не использовал libsig++, но читал об этом. Мой предыдущий опыт работы с сигналами и слотами - из Qt и немного из Boost. Если у вас нет ни одного из них, вы можете попробовать мою собственную библиотеку сигналов и слотов (ksignals), которая существует как для встроенного кода (без динамического выделения памяти), так и для "нормального" c++ кода (динамическое выделение памяти при подключении).

Вы можете найти её по адресу : www.kjellkod.cc/signalandslots

На странице вы также можете найти сравнение: KSignals Vs Boost сигналы.

Скорость vise ksignals очень быстрая и очень легкий код. Он должен быть очень прост в использовании, понятен и при необходимости модифицирован.

Удачи Справки Kjell H

1
ответ дан 27 November 2019 в 04:50
поделиться

Еще одна реализация sig-слота, которую следует рассмотреть:

http://code.google.com/p/ting/wiki/SignalSlotUsage

Она не претендует на звание лучшей, но все же другая тот, который имеет право на существование.

1
ответ дан 27 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: