aboutsummaryrefslogtreecommitdiff
path: root/docs/implementation/primitive
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-07-21 22:08:15 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-07-21 22:08:15 -0400
commit41cb98d4b3313c8abe166473b931b515e64cf1a2 (patch)
tree064b382326ea8937943fbac95fbe77fdbf4c3cb7 /docs/implementation/primitive
parent78af096e176ab416d160a0bfeb9e6ffaaecec49d (diff)
Revise main implementation README
Diffstat (limited to 'docs/implementation/primitive')
-rw-r--r--docs/implementation/primitive/index.html1
1 files changed, 1 insertions, 0 deletions
diff --git a/docs/implementation/primitive/index.html b/docs/implementation/primitive/index.html
index 7cd025d0..25c831c3 100644
--- a/docs/implementation/primitive/index.html
+++ b/docs/implementation/primitive/index.html
@@ -9,6 +9,7 @@
<ul>
<li><a href="replicate.html">Replicate</a></li>
<li><a href="sort.html">Sorting</a></li>
+<li><a href="random.html">Randomness</a></li>
</ul>
<p>Raw speed is of course the most important factor; I also consider predictability and memory usage to be important. Predictability mostly for the benefit of the programmer, but it's also important when there are multiple algorithms to be able to compute which one will be fastest. In some cases an algorithm is best on some subset of inputs, but is effectively useless because it's too difficult to tell if the input falls in that set. Whitney and other K users sometimes profess that binary size is critically important; I don't believe this.</p>
<p>My experience in optimization is mostly with Dyalog APL, which uses 1-byte, 2-byte, and 4-byte integers, 8-byte floats, and bit booleans. These are also the types handled efficiently by SIMD instructions, and I think they are the best choice for any array language without special precision requirements. I am most interested in x86 with vector extensions up to AVX2, as I think this is the hardware most users currently have.</p>