4 ms·
>Doing this sort of thing efficiently may also mean that you're tempted to remove something like a bounds check. After all, if you already know that the value i
by tester756 4y ago
>Doing this sort of thing efficiently may also mean that you're tempted to remove something like a bounds check. After all, if you already know that the value is 5 bytes, why check on every access? People really want parsers to be fast.
In what kind of software bounds check have this significant perf. penalty?
The only people I've heard talking about such a stuff were firmware devs.
>Further, in C, buffers don't have lengths attached to them. In every other language you typically don't work with null terminated strings. So now you have to manage sizes of things throughout your parser.
Cannot C have some wrapper over those poor strings
that leads to better safety? dev's experience, etc, etc?
- insanitybit 4y ago> In what kind of software bounds check have this significant perf. penalty? All kinds. But a lot of it is just that parsers are extremely easy to benchmark and benchmarks promote optimization. > Cannot C have some wrapper over those poor strings Sure, but there's nothing native.
- tester756 4y ago>Sure, but there's nothing native. But why? strings are used by all programmers everyday I struggle to understand why you wouldn't want to make them state of the art, or decent at least.
- insanitybit 4y agoC is an extremely conservative language. You don't even get booleans unless you're in C99 and import it.
- int_19h 4y agoYou do get them without #include <stdbool.h>, you'll just have to contend with ugly spellings like _Bool and _True.
- anjbe 4y agobool, true, and false as native keywords are on track to show up in C23. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2393.pdf https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2393.pdf
- thephyber 4y ago> > Sure, but there's nothing native. > But why? strings are used by all programmers everyday Different kinds of strings can have extremely different performance profiles. A statically allocated string of ASCII (single byte) characters. A dynamically allocated string of unicode (multibyte) characters where the length of allocation is not known ahead of time is very different. C requires the developer to know the differences and knows how to deal with them treat them.
- pjmlp 4y agoBecause WG14 doesn't care about security, for them C is basically a portable macro assembler with added conveniences.