Re: #\a octothorpe syntax vs SRFI 10
Aubrey Jaffer 31 Dec 2004 01:38 UTC
| Date: Wed, 29 Dec 2004 14:14:04 -0800
| From: "Bradd W. Szonye" <xxxxxx@szonye.com>
|
| Bear wrote:
| >> Many recent RISC processors have no 8-bit operations. Some in
| >> the fairly near future will probably also lack 16-bit
| >> operations. It would be far more efficient for these systems to
| >> allocate 16 bits where an 'au8' is requested;
|
| Aubrey Jaffer wrote:
| > No, it won't. Modern CPUs are almost always (I/O-bound or)
| > limited by their memory bandwidth through the cache. If you
| > double or quadruple the data movement necessary, you will execute
| > at half or quarter the speed.
|
| That depends on your data access patterns and cache sizes. If your
| working set still fits in L1 cache after aligning the data, you get
| better performance, and some of the big servers on the market now
| have huge amounts of L1 cache.
The largest I found was 32.kiB inst + 64.kiB data on Suns
<http://www.sun.com/servers/family-comp.html>.
A stripped down SCM interpreter is 40.kB, but even if the interpreter
fit, it would be getting swapped out to bring in SUBRs. 64.kiB would
be a much better fit.
| In some architectures, byte-aligned access may even be more
| expensive than L2 cache.
That sounds like a poorly designed CPU.
| However, still a good practical argument against word-aligning byte
| arrays. Text strings are the main application for byte arrays. If
| you're worried about the performance of byte strings, and you have
| a big enough, fast enough cache, you could word-align the
| characters. But why do that when you could use a text encoding
| /designed/ for word alignment?
Disk-based b-trees, used extensively for database indexes, are an
important example of byte-intensive algorithms not tied to text
strings. Other examples are cryptography and data-compression.