I hereby claim:
- I am josevalim on github.
- I am josevalim (https://keybase.io/josevalim) on keybase.
- I have a public key whose fingerprint is E140 099F 114F 4B2A 21FE 2E69 E337 0FF7 D467 E599
To claim this, I am signing this object:
| small_int_list = Enum.to_list(1..10) | |
| medium_int_list = Enum.to_list(1..1000) | |
| large_int_list = Enum.to_list(1..100_000) | |
| small_other_int_list = Enum.to_list(11..20) | |
| medium_other_int_list = Enum.to_list(1001..2000) | |
| large_other_int_list = Enum.to_list(100_001..200_000) | |
| small_bin_list = Enum.map(1..10, fn _ -> :crypto.strong_rand_bytes(10) end) | |
| medium_bin_list = Enum.map(1..1000, fn _ -> :crypto.strong_rand_bytes(10) end) |
I hereby claim:
To claim this, I am signing this object:
| # You will need fswatch installed (available in homebrew and friends) | |
| # The command below will run tests and wait until fswatch writes something. | |
| # The --stale flag will only run stale entries, it requires Elixir v1.3. | |
| fswatch lib/ test/ | mix test --stale --listen-on-stdin |
$ git clone [email protected]:elixircnx/comeonin.git
$ cd comeonin/
$ git checkout develop
$ mix deps.get
$ mix test
| $ mix app.tree | |
| demo | |
| ├── elixir | |
| ├── phoenix | |
| │ ├── elixir | |
| │ ├── plug | |
| │ │ ├── elixir | |
| │ │ ├── crypto | |
| │ │ └── logger | |
| │ │ └── elixir |
I've taken the benchmarks from Matthew Rothenberg's phoenix-showdown, updated Phoenix to 0.13.1 and ran the tests on the most powerful machines available at Rackspace.
| Framework | Throughput (req/s) | Latency (ms) | Consistency (σ ms) |
|---|
| defmodule SomeModule do | |
| def start(host, options) do | |
| # We are assuming SomeSup has been already started somewhere | |
| # (ideally in a supervision tree). | |
| {:ok, child_pid} = SomeSup.attach_to(SomeSup, host, options) | |
| end | |
| end | |
| defmodule SomeSup do | |
| use Supervisor |
| %% When compiled with: erlc +bin_opt_info foo.erl | |
| %% | |
| %% It prints: | |
| %% | |
| %% foo.erl:13: Warning: NOT OPTIMIZED: compiler limitation: instruction {get_map_elements, | |
| %% {f,3}, | |
| %% {x,1}, | |
| %% {list,[{atom,state},{x,6}]}} prevents delayed sub binary optimization | |
| -module(foo). |
| Nonterminals | |
| grammar expr_list | |
| expr container_expr block_expr access_expr | |
| no_parens_expr no_parens_one_expr no_parens_one_ambig_expr | |
| bracket_expr bracket_at_expr bracket_arg matched_expr unmatched_expr max_expr | |
| op_expr matched_op_expr no_parens_op_expr no_parens_many_expr | |
| comp_op_eol at_op_eol unary_op_eol and_op_eol or_op_eol capture_op_eol | |
| add_op_eol mult_op_eol hat_op_eol two_op_eol pipe_op_eol stab_op_eol | |
| arrow_op_eol match_op_eol when_op_eol in_op_eol in_match_op_eol | |
| type_op_eol rel_op_eol |