Constexpr and consteval are hacks that 1) should have just been the default, and 2) shouldn't even be on the function definition, it should instead have been a keyword on the usage site: (and just use const)
int f() { ... } // any old regular function
const int x = f(); // this is always get evaluated at compile time, (or if it can't, then fail to compile)
int y = f(); // this is evaulated at runtime
That would be the sane way to do compile time functions.Move constructors are not needed, they don't solve a 'problem', but improve on previous semantics.
Most new features of C++ are introduced to fix problems created by previously new features added to C++.
I'm not an expert on this but feel like a 250w light is not the major driver of cost in EUV? Or am I misunderstanding this?
"Extraordinary claims require extraordinary evidence."
Removed `std::atoi` from the benchmarks since it was performing so poorly; not a contender. Should be easy to verify.
Rough results (last column is #iterations):
BM_fast_int<std::int64_t>/10 1961 ns 1958 ns 355081
BM_fast_int<std::int64_t>/100 2973 ns 2969 ns 233953
BM_fast_int<std::int64_t>/1000 3636 ns 3631 ns 186585
BM_fast_int<std::int64_t>/10000 4314 ns 4309 ns 161831
BM_fast_int<std::int64_t>/100000 5184 ns 5179 ns 136308
BM_fast_int<std::int64_t>/1000000 5867 ns 5859 ns 119398
BM_fast_int_swar<std::int64_t>/10 2235 ns 2232 ns 316949
BM_fast_int_swar<std::int64_t>/100 3446 ns 3441 ns 206437
BM_fast_int_swar<std::int64_t>/1000 3561 ns 3556 ns 197795
BM_fast_int_swar<std::int64_t>/10000 3650 ns 3646 ns 188613
BM_fast_int_swar<std::int64_t>/100000 4248 ns 4243 ns 165313
BM_fast_int_swar<std::int64_t>/1000000 4979 ns 4973 ns 140722
BM_atoi<std::int64_t>/10 10248 ns 10234 ns 69021
BM_atoi<std::int64_t>/100 10996 ns 10985 ns 63810
BM_atoi<std::int64_t>/1000 12238 ns 12225 ns 56556
BM_atoi<std::int64_t>/10000 13606 ns 13589 ns 51645
BM_atoi<std::int64_t>/100000 14984 ns 14964 ns 47046
BM_atoi<std::int64_t>/1000000 16226 ns 16206 ns 43279
BM_from_chars<std::int64_t>/10 2162 ns 2160 ns 302880
BM_from_chars<std::int64_t>/100 2410 ns 2407 ns 282778
BM_from_chars<std::int64_t>/1000 3309 ns 3306 ns 208070
BM_from_chars<std::int64_t>/10000 5034 ns 5028 ns 100000
BM_from_chars<std::int64_t>/100000 6282 ns 6275 ns 107023
BM_from_chars<std::int64_t>/1000000 7267 ns 7259 ns 96114
BM_fast_float<std::int64_t>/10 2670 ns 2666 ns 262721
BM_fast_float<std::int64_t>/100 3547 ns 3542 ns 196704
BM_fast_float<std::int64_t>/1000 4643 ns 4638 ns 154391
BM_fast_float<std::int64_t>/10000 5056 ns 5050 ns 132722
BM_fast_float<std::int64_t>/100000 6207 ns 6200 ns 111565
BM_fast_float<std::int64_t>/1000000 7113 ns 7105 ns 98847
That sounds like marketing BS, especially when most likely these functions just call into or are implemented nearly identically to the old C functions which are already going to "offers the best possible performance".
I did some benchmarks, and the new routines are blazing fast![...]around 4.5x faster than stoi, 2.2x faster than atoi and almost 50x faster than istringstream
Are you sure that wasn't because the compiler decided to optimise away the function directly? I can believe it being faster than istringstream, since that has a ton of additional overhead.
After all, the source is here if you want to look into the horse's mouth:
https://raw.githubusercontent.com/gcc-mirror/gcc/master/libs...
Not surprisingly, under all those layers of abstraction-hell, there's just a regular accumulation loop.
I got contacted by a previous manager to apply.
I applied, and _tried_ to set up a first round interview.
I had email receipts and calendar invites for an interview during my lunch break on a weekday. I was ready and available and connected to the Zoom meeting and nobody showed for an hour (which was the end of the interview slot and the end of my lunch break where I had to go back to work).
I emailed them asking what was going on, nothing back for two hours until they sent me a new calendar invite for the middle of the afternoon in my workday. I told them I couldn't make it and they canceled the interview and did not respond to several emails sent to them to try and reschedule.
Second worst Linux distro interview process after Canonical.
Car? max 4.5 + 21% VAT = 25%. But it simply doesn't matter bc we don't want their cars.. Except for thee Dodge RAM, which can be converted to a tax efficient company car (crazy)..
What amazes me even more is that Elon doesn't seems to understand it either.