This question is related to the physical memory of a C# Program. As we know that, byte
variable consumes 1 byte of memory and on the other hand an int
(32-bit) variable consumes 4-bytes of memory. So, when we need variables with possibly smaller values (such as a counter variable i
to iterate a loop 100 times) which one should we use in the below for loop? byte
or int
?
for(byte i=0; i<100; ++i)
Kindly please give your opinion with reason and share you precious knowledge. I shall be glad and thankful to you :-)
Note: I use byte
instead of int in such cases. But I have seen that many experienced programmers use int
even when the expected values are less than 255. Please let me know if I am wrong. :-)
In most cases, you won't get any benefit from using byte
instead of int
. The reason is:
If the loop variable is stored in a CPU register: Since modern CPUs have a register width of 32 bits, and since you can't use only one fourth of a register, the resulting code would be pretty much the same either way.
If the loop variable is not stored in a CPU register, then it will most likely be stored on the stack. Compilers try to align memory locations at addresses which are multiples of 4, this has to do with performance, thus the compiler would also assign 4 bytes to your byte variable on the stack.
Depending on details of your code, the compiler would even add extra code to make sure that the memory location (on the stack or in a register) never exceeds 255, which would add extra code and makes it slower. It's a totally different story with 8 bit microcontrollers like those from Atmel and Microchip, there your approach would make sense.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With