docs: add System.print calls to list examples, reword map docs, update method-calls and performance benchmarks

- Add System.print() wrapper to all list subscript and count examples in lists.markdown
- Reformat map literal alignment and reword description in maps.markdown
- Remove paragraph about fibers as map keys from maps.markdown
- Change method-calls example from "hello" to "Heyoo!" and reword VM execution description
- Update performance benchmark timings and bar widths across all test cases
This commit is contained in:
Bob Nystrom
2016-01-22 05:38:27 +00:00
parent 527d936c55
commit 58c7c735ed
4 changed files with 56 additions and 49 deletions
+34 -21
View File
@@ -6,76 +6,76 @@ seem to like them, so here's a few:
<h3>Method Call</h3>
<table class="chart">
<tr>
<th>wren</th><td><div class="chart-bar wren" style="width: 11%;">0.15s&nbsp;</div></td>
<th>wren</th><td><div class="chart-bar wren" style="width: 14%;">0.12s&nbsp;</div></td>
</tr>
<tr>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 17%;">0.23s&nbsp;</div></td>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 18%;">0.16s&nbsp;</div></td>
</tr>
<tr>
<th>ruby</th><td><div class="chart-bar" style="width: 26%;">0.36s&nbsp;</div></td>
<th>ruby</th><td><div class="chart-bar" style="width: 23%;">0.20s&nbsp;</div></td>
</tr>
<tr>
<th>lua</th><td><div class="chart-bar" style="width: 43%;">0.58s&nbsp;</div></td>
<th>lua</th><td><div class="chart-bar" style="width: 41%;">0.35s&nbsp;</div></td>
</tr>
<tr>
<th>python3</th><td><div class="chart-bar" style="width: 88%;">1.18s&nbsp;</div></td>
<th>python3</th><td><div class="chart-bar" style="width: 91%;">0.78s&nbsp;</div></td>
</tr>
<tr>
<th>python</th><td><div class="chart-bar" style="width: 100%;">1.33s&nbsp;</div></td>
<th>python</th><td><div class="chart-bar" style="width: 100%;">0.85s&nbsp;</div></td>
</tr>
</table>
<h3>DeltaBlue</h3>
<table class="chart">
<tr>
<th>wren</th><td><div class="chart-bar wren" style="width: 27%;">0.13s&nbsp;</div></td>
<th>wren</th><td><div class="chart-bar wren" style="width: 22%;">0.13s&nbsp;</div></td>
</tr>
<tr>
<th>python3</th><td><div class="chart-bar" style="width: 94%;">0.44s&nbsp;</div></td>
<th>python3</th><td><div class="chart-bar" style="width: 83%;">0.48s&nbsp;</div></td>
</tr>
<tr>
<th>python</th><td><div class="chart-bar" style="width: 100%;">0.47s&nbsp;</div></td>
<th>python</th><td><div class="chart-bar" style="width: 100%;">0.57s&nbsp;</div></td>
</tr>
</table>
<h3>Binary Trees</h3>
<table class="chart">
<tr>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 20%;">0.16s&nbsp;</div></td>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 20%;">0.11s&nbsp;</div></td>
</tr>
<tr>
<th>wren</th><td><div class="chart-bar wren" style="width: 39%;">0.29s&nbsp;</div></td>
<th>wren</th><td><div class="chart-bar wren" style="width: 41%;">0.22s&nbsp;</div></td>
</tr>
<tr>
<th>ruby</th><td><div class="chart-bar" style="width: 49%;">0.37s&nbsp;</div></td>
<th>ruby</th><td><div class="chart-bar" style="width: 46%;">0.24s&nbsp;</div></td>
</tr>
<tr>
<th>python3</th><td><div class="chart-bar" style="width: 68%;">0.52s&nbsp;</div></td>
<th>python</th><td><div class="chart-bar" style="width: 71%;">0.37s&nbsp;</div></td>
</tr>
<tr>
<th>lua</th><td><div class="chart-bar" style="width: 97%;">0.73s&nbsp;</div></td>
<th>python3</th><td><div class="chart-bar" style="width: 73%;">0.38s&nbsp;</div></td>
</tr>
<tr>
<th>python</th><td><div class="chart-bar" style="width: 100%;">0.75s&nbsp;</div></td>
<th>lua</th><td><div class="chart-bar" style="width: 100%;">0.52s&nbsp;</div></td>
</tr>
</table>
<h3>Recursive Fibonacci</h3>
<table class="chart">
<tr>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 17%;">0.15s&nbsp;</div></td>
<th>luajit (-joff)</th><td><div class="chart-bar" style="width: 17%;">0.10s&nbsp;</div></td>
</tr>
<tr>
<th>wren</th><td><div class="chart-bar wren" style="width: 38%;">0.31s&nbsp;</div></td>
<th>wren</th><td><div class="chart-bar wren" style="width: 35%;">0.20s&nbsp;</div></td>
</tr>
<tr>
<th>ruby</th><td><div class="chart-bar" style="width: 40%;">0.33s&nbsp;</div></td>
<th>ruby</th><td><div class="chart-bar" style="width: 39%;">0.22s&nbsp;</div></td>
</tr>
<tr>
<th>lua</th><td><div class="chart-bar" style="width: 43%;">0.35s&nbsp;</div></td>
<th>lua</th><td><div class="chart-bar" style="width: 49%;">0.28s&nbsp;</div></td>
</tr>
<tr>
<th>python3</th><td><div class="chart-bar" style="width: 96%;">0.78s&nbsp;</div></td>
<th>python</th><td><div class="chart-bar" style="width: 90%;">0.51s&nbsp;</div></td>
</tr>
<tr>
<th>python</th><td><div class="chart-bar" style="width: 100%;">0.81s&nbsp;</div></td>
<th>python3</th><td><div class="chart-bar" style="width: 100%;">0.57s&nbsp;</div></td>
</tr>
</table>
@@ -184,6 +184,19 @@ means that we can copy down all inherited methods in the subclass when it's
created since we know those will never change. Method dispatch then just
requires locating the method in the class of the receiver.
### Method signatures
Wren supports overloading by arity using its concept of [signatures]. This makes
the language more expressive, but also faster. When a method is called, we look
it up on the receiver's class. If we succeed in finding it, we also know it has
the right number of parameters.
This lets Wren avoid the extra checking most languages need to do at runtime to
handle too few or too many arguments being passed to a method. In Wren, it's not
*syntactically* possible to call a method with the wrong number of arguments.
[signatures]: method-calls.html#signature
### Computed gotos
On compilers that support it, Wren's core bytecode interpreter loop uses