Modern day considerations, Integer versus Long

N

Neal Zimm

Hi All,
I come from a day when storage was a LOT dearer than it is today.

I use Integer or Long for whole # values 'cuz I read once that Integer
takes less memory. It's also kind of self documenting about the size of the
#.

With memory gigs now about the size of a thumbnail, what are the major
pro's and cons of still using As Integer versus As Long.

Thanks.
 
P

Peter T

In 32 bit machines generally there's no advantage to using As Integer. If
anything there's an extra overhead involved as behind the scenes it gets
converted to a Long for storage, then back to an Integer again for use.

There are some built-in Event stubs which expect Integer arguments. You can
still pass your as Long variable though the value must not exceed +/-32k, it
might be worth declaring your variable As Integer to will help flag any
errors. There are one or two API's that expect an Integer value or variable.

Regards,
Peter T
 
C

Chip Pearson

Deep behind the scenes, Integers are converted to Longs, since a
32-bit integer is the coin of the realm of (32-bit) processors. Memory
is so cheap (I recently bought 8 GB for a small fraction of what I
originally paid to upgrade 4 MB to 8 MB back in the day) that you
don't really have to worry about optimizing memory usage. Moreover, if
you are really that concerned about memory usage, VBA is definitely
the wrong language to be using in the first place. With rare
exceptions, you can completely disregard Integers and Singles and
always use Longs and Doubles.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]
 
F

FSt1

hi
none really. an integer is 1 byte, a long is 2 bytes. when dos first came
out and IMB decided that 64000 byte would be all the memory anyone would ever
need, 1 byte may have been signifcant but today where memory is measured in
megabyes and gigabyles, 1 byte is insignificant.
an integer will represent a number value of 32767(pos or neg). the number
value of today's date is 40222 meaning you would get overflow errors trying
to assign a date to a variable dimmed as an integer. personally i never use
integer anymore.
in vb help, type in "data types" and view the table of data types. the
largest is variant which is about 20 bytes which in my opion is still fairly
insignificant.
I wouldn't really worry about it anymore. only if and when you do get an
overflow error would you need to think about it.

regards
FSt1
 
N

Neal Zimm

thanks much peter.
--
Neal Z


Peter T said:
In 32 bit machines generally there's no advantage to using As Integer. If
anything there's an extra overhead involved as behind the scenes it gets
converted to a Long for storage, then back to an Integer again for use.

There are some built-in Event stubs which expect Integer arguments. You can
still pass your as Long variable though the value must not exceed +/-32k, it
might be worth declaring your variable As Integer to will help flag any
errors. There are one or two API's that expect an Integer value or variable.

Regards,
Peter T




.
 
N

Neal Zimm

thanks much.
--
Neal Z


FSt1 said:
hi
none really. an integer is 1 byte, a long is 2 bytes. when dos first came
out and IMB decided that 64000 byte would be all the memory anyone would ever
need, 1 byte may have been signifcant but today where memory is measured in
megabyes and gigabyles, 1 byte is insignificant.
an integer will represent a number value of 32767(pos or neg). the number
value of today's date is 40222 meaning you would get overflow errors trying
to assign a date to a variable dimmed as an integer. personally i never use
integer anymore.
in vb help, type in "data types" and view the table of data types. the
largest is variant which is about 20 bytes which in my opion is still fairly
insignificant.
I wouldn't really worry about it anymore. only if and when you do get an
overflow error would you need to think about it.

regards
FSt1
 
N

Neal Zimm

Thanks Chip
--
Neal Z


Chip Pearson said:
Deep behind the scenes, Integers are converted to Longs, since a
32-bit integer is the coin of the realm of (32-bit) processors. Memory
is so cheap (I recently bought 8 GB for a small fraction of what I
originally paid to upgrade 4 MB to 8 MB back in the day) that you
don't really have to worry about optimizing memory usage. Moreover, if
you are really that concerned about memory usage, VBA is definitely
the wrong language to be using in the first place. With rare
exceptions, you can completely disregard Integers and Singles and
always use Longs and Doubles.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]



Hi All,
I come from a day when storage was a LOT dearer than it is today.

I use Integer or Long for whole # values 'cuz I read once that Integer
takes less memory. It's also kind of self documenting about the size of the
#.

With memory gigs now about the size of a thumbnail, what are the major
pro's and cons of still using As Integer versus As Long.

Thanks.
.
 
C

Chip Pearson

none really. an integer is 1 byte, a long is 2 bytes.

An Integer is two bytes, Long is four bytes.
largest is variant which is about 20 bytes which in my opion is still fairly
insignificant.

True enough, but there is a lot of processing overhead with a Variant,
so it should be avoided not so much for the purposes of minimizing
memory but rather because a lot of work has to be done to figure out
what type of data is in it and then convert that to the appropriate
primitive type.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top