ARRAY TOTAL SIZE LIMIT - lisp-cookbook-ja/common-lisp GitHub Wiki

ๅฎšๆ•ฐ ๅˆถ้™

array-total-size-limitใฏ้…ๅˆ—ใซๅ…ฅใ‚Œใ‚‹ใ“ใจใŒใงใใ‚‹่ฆ็ด ใฎๆœ€ๅคงๆ•ฐใ‚ˆใ‚Š1ๅคงใใ„ๆ•ฐใงใ™ใ€‚ใ™ในใฆใฎ้…ๅˆ—ใซๅ…ฑ้€šใ™ใ‚‹ๅˆถ้™ใงใ€ๅค‰ๆ›ดใฏใงใใพใ›ใ‚“ใ€‚ๅ…ทไฝ“็š„ใชๅ€คใฏๅ‡ฆ็†็ณปใซใ‚ˆใฃใฆ็•ฐใชใ‚Šใพใ™ใŒใ€ๅฐ‘ใชใใจใ‚‚1024ใ‚ˆใ‚Šๅคงใใ„ๆ•ฐใซใ™ใ‚‹ใ‚ˆใ†ใซๆฑบใ‚ใ‚‰ใ‚Œใฆใ„ใพใ™ใ€‚

ใ‚ใพใ‚Š้–ขใ‚ใ‚ŠใŒใชใ„ใจๆ€ใ„ใŒใกใงใ™ใŒใ€(unsigned-byte 8)ใฎ้…ๅˆ—ใซๅคงใใ‚ใฎใƒ‡ใƒผใ‚ฟใ‚’่ชญใฟ่พผใ‚“ใ ใ‚Šใ€้•ทใ„ๆ–‡ๅญ—ๅˆ—ใ‚’ไฝœใฃใŸใ‚Šใ™ใ‚‹ใจ๏ผˆๆ–‡ๅญ—ๅˆ—ใฏๆ–‡ๅญ—ใฎ้…ๅˆ—ใชใฎใง๏ผ‰ใ€ไธปใซ32ใƒ“ใƒƒใƒˆใฎ็’ฐๅขƒใงใ€ใ“ใฎๅˆถ้™ใซใ‹ใ‹ใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚

ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  ใƒชใƒŸใƒƒใƒˆ
CLISP 2.49 32-bit 2^24 - 1 = 16777215
CLISP 2.49 64-bit 2^32 - 1 = 4294967295
Clozure CL 1.7 64-bit 2^56 = 72057594037927936
Clozure CL 1.7 32-bit 2^24 = 16777216
LispWorks 6.0.1 32-bit 67108337 (โ‰’ 2^26)
LispWorks 7.1 64-bit 2^29 - 1 = 536870911
Steel Bank Common Lisp 1.0.53 64-bit 4611686018427387901 (โ‰’ 2^62)
Allegro CL 32-bit 2^29 - 1 = 536870911
Allegro CL 64-bit 2^60 - 1 = 1152921504606846975
XCL 64-bit 2^61 - 1 = 2305843009213693951
CMUCL 20c 32-bit 2^29 - 1 = 536870911
ABCL 1.0.0 2^31 - 1 = 2147483647
Scieneer CL 1.3.9 64-bit 2^60 - 1 = 1152921504606846975
GCL 2.6.7 CLtL1 64-bit 2^31 - 1 = 2147483647

Clozure CL

64ใƒ“ใƒƒใƒˆใฎ็’ฐๅขƒใง2^56๏ผˆ72057594037927936๏ผ‰ใ€32ใƒ“ใƒƒใƒˆใฎ็’ฐๅขƒใง2^24๏ผˆ16777216๏ผ‰ใซ่จญๅฎšใ•ใ‚Œใฆใ„ใพใ™ใ€‚

17.2. Register usage and taggingใฎ"17.2.4. Tagging scheme"ใง่ฉณใ—ใ่ชฌๆ˜Žใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ๅณๅ€ค๏ผˆ็’ฐๅขƒใ”ใจใซไฝ•ใŒๅณๅ€คใ‹ใฏ็•ฐใชใ‚Šใพใ™๏ผ‰ใจใ‚ณใƒณใ‚นใ‚ปใƒซไปฅๅค–ใฎLispใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใฏใ€Clozure CLใงใฏuvectorใจใ„ใ†ใƒ‡ใƒผใ‚ฟๆง‹้€ ใง่กจ็พใ•ใ‚Œใฆใ„ใพใ™ใ€‚

uvectorใงใฏใ€ใƒ‡ใƒผใ‚ฟๆง‹้€ ใฎๆœ€ๅˆใฎ1$$wp ใƒฏใƒผใƒ‰ใซๅ†…ๅฎนใฎๅž‹ใ‚’่กจใ™ๆƒ…ๅ ฑ๏ผˆ8ใƒ“ใƒƒใƒˆ๏ผ‰ใจ่ฆ็ด ใฎๆ•ฐ๏ผˆ1ใƒฏใƒผใƒ‰ - 8ใƒ“ใƒƒใƒˆ๏ผ‰ใŒๅ…ฅใ‚‹ใ‚ˆใ†ใซๆฑบใพใฃใฆใ„ใพใ™ใ€‚ใใ—ใฆใ€้…ๅˆ—ใฏๅณๅ€คใงใ‚‚ใ‚ณใƒณใ‚นใ‚ปใƒซใงใ‚‚ใ‚ใ‚Šใพใ›ใ‚“ใ‹ใ‚‰ใ€uvectorใจใ—ใฆๆ‰ฑใ‚ใ‚Œใพใ™ใ€‚ใใฎใŸใ‚ใ€้…ๅˆ—ใฎ่ฆ็ด ใฎๆ•ฐใ‚‚1ใƒฏใƒผใƒ‰ - 8ใƒ“ใƒƒใƒˆใฎ้ ˜ๅŸŸใซ่จ˜้Œฒใ•ใ‚Œใ‚‹ใ“ใจใซใชใ‚Šใ€64ใƒ“ใƒƒใƒˆใฎ็’ฐๅขƒใงใฏ56ใƒ“ใƒƒใƒˆ๏ผˆ0๏ฝž2^56 - 1๏ผ‰ใ€32ใƒ“ใƒƒใƒˆใฎ็’ฐๅขƒใงใฏ24ใƒ“ใƒƒใƒˆ๏ผˆ0๏ฝž2^24 - 1๏ผ‰ใฎ็ฏ„ๅ›ฒใซ่ฆ็ด ใฎๆ•ฐใ‚‚ๅˆถ้™ใ•ใ‚Œใพใ™ใ€‚

โ– 32ใƒ“ใƒƒใƒˆ็’ฐๅขƒใงใฎuvectorใฎๆง‹้€ 

 0  1  2  3  4  5  6  7  8  9 10  ... 28 29 30 31 32 33 34 35 36 ...
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”
โ”ƒ       ๅž‹ๆƒ…ๅ ฑ         โ”ƒ       ่ฆ็ด ใฎๆ•ฐ         โ”ƒ  ๅฎŸ้š›ใฎใƒ‡ใƒผใ‚ฟ
โ”—โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ปโ”โ”โ”โ”โ”โ”โ”โ”

ๅ‚่€ƒๆ–‡็Œฎ