LINUX.ORG.RU

типы переменных (char или int)


0

0

стоит ли использовать переменные типа char вместо int если гарантированно что значение переменной никогда не превысит 128 (или 256), меня интересует быстродействие программы и размер выделяемой памяти

anonymous

На счет быстродействия спорный момент, а вот память точно сэкономишь (char в общем случае меньше int). СтОит или НЕ стОит зависит от задачи. Если алгоритм не тривиальный, имеет смысл потратить время и силы на усовершенствование именно АЛГОРИТМА, а не экономить байтики. С другой стороны если есть ограничения на объем занимаемый программой памяти, а быстродействие не критично, плясать надо от char. Всё зависит от задачи, будь то однокристальный микроконтроллер или 5-й пентиум дяди Васи с гигом оперативки. В каждом случае свой подход.

anonymous
()

> стоит ли использовать переменные типа char вместо int если
> гарантированно что значение переменной никогда не превысит 128 (или
> 256), меня интересует быстродействие программы и размер выделяемой
> памяти

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

Хотя если я правильно понял контекст вопроса - нет, не стоит.

int19h ★★★★
()
Ответ на: комментарий от int19h

Меня интересует определение глобальных переменных например флагов и
возвращаемое значение ф-ции которые принимают значение 0 или 1 стоит ли их char-ом объявлять?
Я пишу на си, ради интереса посмотрел размер bool в с++ = 4 байта есть ли в этом какой-то смысл?

CL
()

работа с char не будет быстрее, чем c int.

процессор все равно работает с cache, а cache все
равно читает/пишет cacheline'ами.

единственное исключение - если этот int не выровнен,
но этого все равно стоит избегать.

память, разумеется, вы можете сэкономить, если у вас
массив таких элементов. или, например, они идут подряд
в структуре.

вообще, мне кажется, стоит воспринимать int как тип,
с которым процессор работает быстрее всего.

idle ★★★★★
()
Ответ на: комментарий от CL

> Меня интересует определение глобальных переменных например флагов

для глобального char все равно будет выделено 4 байта

> и возвращаемое значение ф-ции которые принимают значение 0 или 1

все равно регистр

> есть ли в этом какой-то смысл?

нету

idle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.