prechelt-phone-number-enco
prechelt-phone-number-encoding
prechelt-phone-number-enco | prechelt-phone-number-encoding | |
---|---|---|
3 | 1 | |
- | 0 | |
- | - | |
- | 0.0 | |
- | almost 3 years ago | |
Java | ||
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
prechelt-phone-number-enco
-
Optimising Common Lisp to try and beat Java and Rust on phone encoding 2/2
> it’s using Unicode-aware string stuff
Rust uses UTF-8 internally for Strings, so it's very efficient to parse a file into a String, then using slices to go through it... this is probably the best you can get as parsing ASCII input as UTF-8 is very efficient (the 0-bit is always zero in ASCII, the unicode decoder only needs to check that's the case for every byte, so it's not some kind of complicated computation it's doing to decode)...
If you use bytes for everything, you will make the whole code much harder to follow and it still won't run faster.
Check for yourself: https://github.com/renatoathaydes/prechelt-phone-number-enco...
-
Learning Common Lisp to beat Java and Rust on a phone encoding problem
This is a pretty introductory CL article, mostly a commentary on Norvig's solution to the problem. Still, I learned about the #. readmacro from it. The conclusion: "[The Lisp implementation] was the fastest implementation for all input sizes except the largest one, where it performed just slightly worse than my best Java implementation." GH repo at https://github.com/renatoathaydes/prechelt-phone-number-enco.... Sounds like he was mostly measuring the performance of the SBCL bignum implementation.
-
How to write slow Rust code
source: https://github.com/renatoathaydes/prechelt-phone-number-enco...
prechelt-phone-number-encoding
-
How to write slow Rust code
In this case the linked list is just tracking "breadcrumbs" which mirror the path back up the call chain, so you don't even need reference counting; a simple borrowed reference will do. I put together a version in Rust based on stack-allocated linked lists[0], and the results were promising: on 10 million inputs the Rust version completes in about 40 seconds on my machine, while the Java port (Main2.java in the code; "Java1" from the article IIUC) takes 82 seconds. This Rust version doesn't allocate anything from the heap, apart from loading the dictionary at startup; all the bookkeeping, including the cons cells, is kept on the stack.
[0] https://github.com/nybble41/prechelt-phone-number-encoding
What are some alternatives?
woo - A fast non-blocking HTTP server on top of libev
prechelt-phone-number-encoding - Comparison between Java and Common Lisp solutions to a phone-encoding problem described by Prechelt
jelm - Extreme Learning Machine in J
bordeaux-threads - Portable shared-state concurrency for Common Lisp
cl-cookbook - The Common Lisp Cookbook
snabl - a simple Go scripting language
ulisp - A version of the Lisp programming language for ATmega-based Arduino boards.
coalton - Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.