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