aboutsummaryrefslogtreecommitdiffhomepage
path: root/docs/wiki_src/technical/performance.md
diff options
context:
space:
mode:
authorMarvin Borner2023-11-06 18:50:35 +0100
committerMarvin Borner2023-11-06 18:50:35 +0100
commit1f7231153c172500f1073ddb22ec911379f83a07 (patch)
treef6914c30fcbeaf44c12b405eaa09065fb8203ac7 /docs/wiki_src/technical/performance.md
parent9d722a0b6138827de743f9fe4acbf3f2c1830bb0 (diff)
Improved wiki and reduced readme
Diffstat (limited to 'docs/wiki_src/technical/performance.md')
-rw-r--r--docs/wiki_src/technical/performance.md24
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/wiki_src/technical/performance.md b/docs/wiki_src/technical/performance.md
new file mode 100644
index 0000000..05fd683
--- /dev/null
+++ b/docs/wiki_src/technical/performance.md
@@ -0,0 +1,24 @@
+# Performance
+
+The reduction of lambda calculus is (practically) not very efficient. As
+an extension, bruijn also suffers from bad performance.
+
+Bruijn's interpreter works by substituting the entire program into one
+huge lambda calculus term that will then get reduced by the
+[reducer](reduction.md). As a result, many equivalent terms get
+evaluated multiple times (although some of this get's solved by bruijn's
+call-by-need reduction strategy). We currently work on a solution that
+reduces all equivalent terms as one, which turns out is not actually
+that trivial. Follow the [blog](https://text.marvinborner.de) to keep up
+to date with the development.
+
+Aside from that, bruijn is still much faster than most of the hobby
+programming languages based on pure lambda calculus. This is because of
+the [RKNL reducer](reduction.md) and our choice of default [number/byte
+encodings](../coding/data-structures.md).
+
+``` bruijn
+> :import std/Math .
+> :time fac (+30)
+0.15 seconds
+```