This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
HiAre you expecting all 729 million entries to be used, or only a small fraction? If you only expect a small fraction of the entries to actually be used then you should probably use an associative (aka hash) map instead. Bear in mind that even if you actually have the gigabytes of memory that would be required to store your linear array that actually making the essentially random storage references that such an array would require would guarantee cache misses which could severely degrade the performance of your application. Since an associative array only uses the number of entries that are actually assigned values it will tend to avoid cache misses, which may be enough to compensate for the slightly longer path length to locate an entry. As long as the hash vector is significantly larger than the maximum number of entries inserted into the "array", and the hash function on the key returns sufficiently well distributed values, the time to access a specific element is essentially constant.
I am trying to construct a multidimensional array (as linear array in memory, but indexed with equations to represent the dimensions) of size 30 each, and 6 dimensions, which is 30^6=729000000
using a long type for the array crashes, as it is outside the range values. I used double long data type, and I had the above error: array subscript is not an integer
Is there a work around this problem that I can implement, or another
way of creating similar arrays?
-- Jim Cobban jcobban@magma.ca 34 Palomino Dr. Kanata, ON, CANADA K2M 1M1 +1-613-592-9438
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |