diff options
author | Björn Gustavsson <[email protected]> | 2016-06-07 15:14:16 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-12-15 10:13:46 +0100 |
commit | 1cc8044ffc6073749e34dcf1434f02272fe4b457 (patch) | |
tree | 0dc759cd7b003b5ee1f11fa52d6ad16b39832a42 /system/doc/efficiency_guide/retired_myths.xml | |
parent | e1cdd3732f5ff447195625620b78883c2f22fb65 (diff) | |
download | otp-1cc8044ffc6073749e34dcf1434f02272fe4b457.tar.gz otp-1cc8044ffc6073749e34dcf1434f02272fe4b457.tar.bz2 otp-1cc8044ffc6073749e34dcf1434f02272fe4b457.zip |
Retire two myths
Diffstat (limited to 'system/doc/efficiency_guide/retired_myths.xml')
-rw-r--r-- | system/doc/efficiency_guide/retired_myths.xml | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/system/doc/efficiency_guide/retired_myths.xml b/system/doc/efficiency_guide/retired_myths.xml new file mode 100644 index 0000000000..37f46566cd --- /dev/null +++ b/system/doc/efficiency_guide/retired_myths.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>2016</year> + <year>2016</year> + <holder>Ericsson AB, All Rights Reserved</holder> + </copyright> + <legalnotice> + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + The Initial Developer of the Original Code is Ericsson AB. + </legalnotice> + <marker id="retired_myths"/> + <title>Retired Myths</title> + <prepared>Bjorn Gustavsson</prepared> + <docno></docno> + <date>2016-06-07</date> + <rev></rev> + <file>retired_myths.xml</file> + </header> + + <p>We belive that the truth finally has caught with the following, + retired myths.</p> + + <section> + <title>Myth: Funs are Slow</title> + <p>Funs used to be very slow, slower than <c>apply/3</c>. + Originally, funs were implemented using nothing more than + compiler trickery, ordinary tuples, <c>apply/3</c>, and a great + deal of ingenuity.</p> + + <p>But that is history. Funs was given its own data type + in R6B and was further optimized in R7B. + Now the cost for a fun call falls roughly between the cost for a call + to a local function and <c>apply/3</c>.</p> + </section> + + <section> + <title>Myth: List Comprehensions are Slow</title> + + <p>List comprehensions used to be implemented using funs, and in the + old days funs were indeed slow.</p> + + <p>Nowadays, the compiler rewrites list comprehensions into an ordinary + recursive function. Using a tail-recursive function with + a reverse at the end would be still faster. Or would it? + That leads us to the myth that tail-recursive functions are faster + than body-recursive functions.</p> + </section> +</chapter> |