Web++: A C++ Web Framework
I just spent practically 2 days trying to re-implement std::tolower and std::toupper. Benchmarked so many versions. Tried multiple versions that were written with SIMD and yet the simplest version came out on top after GCC and Clang optimizing them.
benchmarks.7z
68.1 KB
And here are the benchmarks.
And here are some twitter fellows helping me failing at topping the easiest for loop ever written :)
https://twitter.com/the_moisrex/status/1307670297911402497?s=20
Now we know how horrible some of the utilities in the STL are. Well, of course std::tolower and std::toupper do have locales but that's what I don't need in this project; at least not now.
And here are some twitter fellows helping me failing at topping the easiest for loop ever written :)
https://twitter.com/the_moisrex/status/1307670297911402497?s=20
Now we know how horrible some of the utilities in the STL are. Well, of course std::tolower and std::toupper do have locales but that's what I don't need in this project; at least not now.
I've added some of the benchmarks I've used for this project to the git repository, unfortunately I'm not able to gather all the benchmarks I've used so far, and even some of them don't have anything to do with this project directly (for example I've did lots of benchmarking for std::variant and others).
I'll try to put all of future benchmarks in the repository as well (in the benchmarks directory).
Feel free to run them, add to them, updated them and learn from them as I did a lot so far.
Specially the iequals and tolower benchmarks which I did this week were amazing stuff.
Even with iequals, I madethe algorithm to run about 2000x faster.
You can find the benchmarks in dev branch in the benchmarks directory: https://github.com/the-moisrex/webpp/tree/dev/benchmarks
I'll try to put all of future benchmarks in the repository as well (in the benchmarks directory).
Feel free to run them, add to them, updated them and learn from them as I did a lot so far.
Specially the iequals and tolower benchmarks which I did this week were amazing stuff.
Even with iequals, I madethe algorithm to run about 2000x faster.
You can find the benchmarks in dev branch in the benchmarks directory: https://github.com/the-moisrex/webpp/tree/dev/benchmarks
My curiosity got the best me; so I implemented a SIMD-enabled string equality function just to find out ... (find out about the results here:)
https://github.com/the-moisrex/webpp/tree/dev/benchmarks/equals
https://github.com/the-moisrex/webpp/tree/dev/benchmarks/equals
GitHub
the-moisrex/webpp
C++ web framework. Contribute to the-moisrex/webpp development by creating an account on GitHub.
Today's benchmark's results are weird; do you know what's going on?
https://github.com/the-moisrex/webpp/tree/dev/benchmarks/is_alpha
https://github.com/the-moisrex/webpp/tree/dev/benchmarks/is_alpha
GitHub
the-moisrex/webpp
C++ web framework. Contribute to the-moisrex/webpp development by creating an account on GitHub.
Had a nice talk with Sean Baxter about attributes; remind me to use them in this framework when we can use them in our C++ projects in a couple of years.
https://twitter.com/the_moisrex/status/1313878622428594176
https://twitter.com/the_moisrex/status/1313878622428594176
Twitter
The Moisrex
@seanbax @Attribute Amazing. I can't wait to use them in my framework. thanks.
This little trick explains how re-calculating stuff can actually help you improve performance specially in SIMD.
Explained here: https://youtu.be/1ir_nEfKQ7A?t=402
Explained here: https://youtu.be/1ir_nEfKQ7A?t=402
YouTube
Halide: A Language for Fast, Portable Computation on Images and Tensors - Alex Reinking - CppCon 20
https://cppcon.org/
https://github.com/CppCon/CppCon2020
---
Halide is an open-source, domain-specific language for optimizing image processing, machine learning, and general array processing. It is used by major companies like Google, Adobe, and Qualcomm…
https://github.com/CppCon/CppCon2020
---
Halide is an open-source, domain-specific language for optimizing image processing, machine learning, and general array processing. It is used by major companies like Google, Adobe, and Qualcomm…