Comments (4)
That's cool. And yeah, I don't think I ever optimized that bit of code, but it can yield good results for debugging.
I think the small_to_big and big_to_small implementations by far give the best performance on all large-ish data sets with a smaller selection being kept, whereas gb_trees tend to get better as the selection length is the one thing that increases.
I think the small_to_big implementation could be made better by performing an insertion step on the accumulator rather than just re-sorting the full accumulator, which would reduce the overall cost (n/2
per run on average rather than nlogn
where n
is the accumulator size I think). I tried it for fun and here's the difference in runtime between both tries:
28> test:test(50000, 100).
{{50000,100},
[{gb_tree________________,12949,100},
{small_to_big_order_list,17939,138.5357942698278},
{big_to_small_order_list,42346,327.02139161325204},
{all_sorted_sublist_____,46114,356.1201637192061}]}
29> c(test).
{ok,test}
30> test:test(50000, 100).
{{50000,100},
[{small_to_big_order_list,20091,100},
{gb_tree________________,23022,114.58862177094223},
{big_to_small_order_list,42949,213.77233587178338},
{all_sorted_sublist_____,54879,273.15215768254444}]}
goes from being 39% slower than gb_trees to 15% faster.
Here's the diff:
43c43
< {Len + 1, lists:sort([NewKey|Acc])};
---
> {Len + 1, insert(NewKey, Acc)};
48c48
< {Len, lists:sort([NewKey|Acc2])};
---
> {Len, insert(NewKey, Acc2)};
54a55,60
> insert(K, []) -> [K];
> insert(K, [H|T]) ->
> if K =< H -> [K,H|T];
> K > H -> [H|insert(K,T)]
> end.
>
129d134
<
from recon.
ping @ferd :)
from recon.
Wow! Your version is really great!
I can send a PR for this.
from recon.
Yeah that would be appreciated :)
from recon.
Related Issues (20)
- Please create a new release HOT 4
- recon_alloc memory function returns memory used more than physical memory of the VM HOT 1
- recon_trace:calls - no output on OTP26 HOT 7
- `recon:node_stats` - Issue in number of reductions HOT 1
- How to trace recursive calls ? HOT 7
- Request to release 2.5.5 HOT 1
- Would atom table dumping be useful for recon? HOT 4
- difficulties installing recon HOT 11
- New relase with records tracing HOT 5
- Dialyzer warning for overlapping domains HOT 7
- Map filtering breaks some output
- recon_alloc fails on OTP 23 HOT 2
- recon_trace:calls for remote node HOT 1
- Crash on recon_alloc:memory(used) on OTP 23.0 HOT 3
- Move from Travis CI to GitHub Actions? HOT 1
- Newbie question HOT 1
- Elixir Kernel function cannot be traced but erlang kernel HOT 6
- Crash using `binary_memory` on a dead process
- app_deps.erl enhancements HOT 2
- recon:port_info/1 errors with OTP 23.0 and later when Creation > 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from recon.