Я ищу, чтобы переделать существующую библиотеку для чисел с фиксированной точкой. В настоящее время библиотека представляет собой только функции с именами, работающие с 32-разрядными целыми знаками. Я хотел бы обернуть это и создать класс с фиксированной точкой, который обертывает целое число, но не хочет платить какое-либо ограничение производительности, связанное с классами, для чего-то такого мелкозернистого, так как производительность является проблемой для прецедента.Целочисленная производительность оболочки класса
Поскольку предполагаемый класс имеет такие простые требования к данным и ресурсов, я подумал, что можно было бы сделать класс «ориентированным на ценность», используя немодифицирующие операции и передавая экземпляры по значению, когда это разумно. Это будет простой класс, если он реализован, а не часть иерархии.
Мне интересно, можно ли написать целочисленный класс-оболочку таким образом, чтобы не было реального штрафа за производительность по сравнению с использованием необработанных целых чисел. Я почти уверен, что это так, но не знаю достаточно о процессе компиляции, чтобы просто в нее вскочить.
Я знаю, что сказано, что итераторы stl скомпилированы в простые операции с указателями и хотели бы сделать что-то подобное только с целыми операциями.
В любом случае библиотека будет обновлена до C++ 11, так что я надеюсь, что по крайней мере с помощью constexpr и других новых функций, таких как ссылки rvalue, я могу приблизить производительность этого класса к чистых целых операций.
Кроме того, будут рекомендованы любые рекомендации по сравнительным характеристикам производительности между двумя реализациями.
'constexpr' будет полезен, я сомневаюсь, что вы будете использовать ссылки rvalue, потому что ваш класс будет настолько дешевым, чтобы копировать в первую очередь. Используйте много инкрустаций, сохраняйте свои конструкторы и деструкторы тривиальными, и вы должны увидеть хорошую производительность. –