Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Премущество int над byte


Автор: redmadhat 23.1.2009, 21:18
Пишу программу. Операции в основном с массивами до 8 элементов, а максимальное значение элементов массива до 100.
Под такую задачу отлично походит тип данных byte. В задаче часто встречается выражение
Код

byte a,b;
a=10;
b=a+1;

Но это конструкция вызивает ошибку. Похоже если явно пишу значение, то оно восприминяется как тип int.
Решение конструкция:
Код

b=(byte)(a+1);


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

for(byte i=0;i<7;i++){
    ......
   mas[i-1];
   ......


Переделать в:
Код

for(byte i=0;i<7;i++){
    ......
   byte index = (byte)(i-1);
   mas[index];
   ......


Стоит ли использовать int вместо byte?
Какое влияние оказывает скорость программы данные типы?

Автор: Temdegon 23.1.2009, 21:42
Дельный вопрос. Меня тоже всегда душит жаба, когда где-то вполне хватило бы byte, но приходится юзать int, что бы не париться с постоянным приведением типов. Хотелось бы узнать, конструкции типа 
Код

b=(byte)(a+1);

как-то сказываются на скорости вычислений или это все обрабатывается на этапе компиляции?
Те же счетчики циклов, есть ли смысл по возможности использовать byte вместо int?

Автор: ivg 23.1.2009, 22:27
Цитата(redmadhat @  23.1.2009,  23:18 Найти цитируемый пост)
Стоит ли использовать int вместо byte?

Да.
Цитата(Temdegon @  23.1.2009,  23:42 Найти цитируемый пост)
Те же счетчики циклов, есть ли смысл по возможности использовать byte вместо int? 

Нет.
Цитата(Temdegon @  23.1.2009,  23:42 Найти цитируемый пост)
когда где-то вполне хватило бы byte, но приходится юзать int,

Локальная переменная и, я так думаю, что поле класса тоже, типа byte в реальности занимает в памяти 4 байта. В VM Spec где то это было написано. Поэтому никакой экономии памяти не будет. Разумеется это не относится к байтовым массивам.
Цитата(Temdegon @  23.1.2009,  23:42 Найти цитируемый пост)
как-то сказываются на скорости вычислений

Целочисленные операции с типами byte, short, char неявно приводят операнды к типу int, с которыми выполняется операция, обратное приведение результата требует выполнения одной инструкции в байт-коде.

Автор: redmadhat 23.1.2009, 22:38
to ivg:
Спасибо за пояснения, я уже начал проект так что есть время все переделать.

Автор: Sleepy_PIP 23.1.2009, 22:41
подтверждаю. обосновать не могу кроме реальных измерений задач которые не интересуют никого.
для интел архитектуры - основа 16 разрядов двоичных - именно с ними интел до сих пор справляется быстрее всего ....

порочный интел :( ...

Автор: Samotnik 24.1.2009, 13:42
use int  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)