prechelt-phone-number-encoding
prechelt-phone-number-encoding
prechelt-phone-number-encoding | prechelt-phone-number-encoding | |
---|---|---|
18 | 1 | |
29 | 0 | |
- | - | |
2.7 | 0.0 | |
4 months ago | almost 3 years ago | |
Java | 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-encoding
-
Benchmarking Java against Rust #3
You're looking at the non-optimized version. If you read the blog post you would've seen your suggestions had already been implemented.
- Help me find bottlenecks in this benchmark. I ported the Common Lisp solution to Zig and the Zig version is much slower?!
-
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.
-
Revenge Of Lisp - Learning Common Lisp to beat Java and Rust on a phone encoding problem
Here are the commits I've made so far. If anyone wants to help write the most efficient possible Lisp implementation, please send suggestions here!
-
How to write fast Rust code
OMG you're right... I'm the author, and the reason it was allocating in my original code was that I was calling the operators on a reference to n. See https://github.com/renatoathaydes/prechelt-phone-number-encoding/commit/6683dc10cc4fb380abead632b87d94e8937f8377
-
How to write slow Rust code - Part 2 (a deeper look into what really made my code slow)
This commit show how to improve that: https://github.com/renatoathaydes/prechelt-phone-number-encoding/commit/561a7307b5574bd6fd7b8cc638abf6f29884b6ca
-
My battle to beat Common Lisp and Java (in Rust) on a phone number encoding problem. Sequel to "Revisiting Prechelt's Paper…". (and they didn't even optimize the Lisp code)
See https://github.com/renatoathaydes/prechelt-phone-number-encoding/issues/6
-
How to write really slow Rust code
I get the need to want to obsessively optimize the code. There's nothing more fun than to optimize something simple, artificial, and narrowly-defined. But y'all need to take a deep breath, step back, and realize that one blog post isn't going to suddenly define the language (nor should it personally define you).
-
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-enco
prechelt-phone-number-encoding - Comparison between Java and Common Lisp solutions to a phone-encoding problem described by Prechelt
libphonenumber - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.
doom-emacs - An Emacs framework for the stubborn martian hacker [Moved to: https://github.com/doomemacs/doomemacs]
num-bigint - Big integer types for Rust
sb-simd - A convenient SIMD interface for SBCL.
jelm - Extreme Learning Machine in J
bordeaux-threads - Portable shared-state concurrency for Common Lisp
ulisp - A version of the Lisp programming language for ATmega-based Arduino boards.
cl-cookbook - The Common Lisp Cookbook