используя производительность uintX_t

У меня была дискуссия с руководителем группы, который сказал мне, что с помощью uintX_t это очень проблематично и вызывает проблемы с производительностью … Я не могу понять, почему ….
с помощью uint8_t а также uint16_t такой же как unsigned char а также unsigned short — Я не думаю, что использование этих типов вызывает проблемы с производительностью …
Именно так uint64_t как long……
Может быть проблемы с производительностью могут возникнуть с uint128_t так далее..
Это правильно или я что-то упустил …

Upd
Известно, что unsigned char а также unsigned short размеры не должны быть 8 и 16 на всех платформах …. Просто используются классические значения …..

0

Решение

Гарантия размера является основной целью.

Эти типы не предназначены для проблем с производительностью. Они сделаны, чтобы гарантировать, что целочисленные размеры одинаковы для разных систем.

Например, когда вы используете int32_t вы можете быть уверены, что его размер составляет 32 бита в любом месте, где компилируется код, но вы не уверены в размере int,

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

Например, компилятор может использовать 32 бит int для int_fast16_t в 32-битной машине …

4

Другие решения

Это вопрос типа «как долго кусок строки».

Всякий раз, когда кто-либо предъявляет претензии такого рода, которые вас волнуют, попросите показать код, который они использовали, и результаты своих тестов. Затем вы сможете оценить, применимы ли эти критерии к вашему делу, и, возможно, выполнить их самостоятельно.

Другими словами, заявка не стоит очень дорого без тестов, которые отражают вашу среду и ваше фактическое использование этих типов. Вполне возможно, что руководитель вашей группы провел тщательное профилирование рассматриваемой базы кода; возможно, он просто «думает», что uintX_t будет медленнее. У нас нет возможности узнать, что это такое.

2

У вас могут возникнуть проблемы с производительностью, если вы используете uint8_t на 32-битных процессорах, и вам не нужно автоматическое переполнение, если число больше 255.

Почему: Компилятору может потребоваться применить маску к значению перед его обработкой / использованием.

Например, 8-битное значение хранится в 32-битном регистре, вам нужно сделать сравнение с ним, и если ваш процессор не имеет инструкции для сравнения только с использованием 8 младших битов регистра, поэтому компилятор должен примените маску 0x0000FFFF перед выполнением сравнения

Вот почему у вас есть типы: int_least8_t или же uint_fast8_t
Взгляните на эту страницу stdint.h чтобы увидеть все доступные типы

1

Они являются типами и пытаются сделать определенные типы кроссплатформенными, гарантируя их размер. В частности, в них нет ничего, что могло бы вызвать проблемы с производительностью. Проблема может быть в том, как они используются (что не будет отличаться для unsigned int, unsigned short, а также unsigned char).

Короче говоря, ваша команда не права и, вероятно, является прямым следствием Принцип Питера.

0
По вопросам рекламы [email protected]