]> Kevux Git Server - fll/commit
Update: Optimize away the isdigit(), isalpha(), isalnum(), and isxdigit().
authorKevin Day <Kevin@kevux.org>
Sun, 4 Aug 2024 00:52:46 +0000 (19:52 -0500)
committerKevin Day <Kevin@kevux.org>
Sun, 4 Aug 2024 00:52:46 +0000 (19:52 -0500)
commit8a96c0e49b98640878cbd6b9239e9fb8d1cba156
treebca813b4cfdff42407e281ca5d31e35bd6b0297e
parentdb357ebedb451a277448b831ff5c17399e34579b
Update: Optimize away the isdigit(), isalpha(), isalnum(), and isxdigit().

I did some research and learned that the "is*()" functions can greatly affect performance due to locale and other manners.
I originally used these to allow for well established optimization to take place.

Replace these with some mathematical operations that should increase performance.
This also means no function call on the stack.
This project is already function stack heavy by design and so reducing functions when easy is a great thing.

Start using literal characters rather than the standard strings for the UTF related functions.
In these cases the ASCII expectation is guaranteed.
The ability to override these is also not practical as the meaning should not change.

I have not looked at all of the "is*()" functions and I may address any remaining ones at a later time.
I potentially may also investigate mapping tables to further improve performance.

These math calculations can be used in a lot of the non-ASCII UTF ranges as well.
I opted to not do these just yet given that such work will take a large amount of time.

I have not done any performance analysis yet but I plan to do so.
13 files changed:
level_0/f_utf/c/private-utf_digit.c
level_0/f_utf/c/private-utf_digit.h
level_0/f_utf/c/utf/convert.c
level_0/f_utf/c/utf/is.c
level_0/f_utf/c/utf/is.h
level_0/f_utf/c/utf/is_character.c
level_0/f_utf/c/utf/is_character.h
level_1/fl_string/c/string.c
level_1/fl_string/c/string.h
level_2/fll_execute/c/private-execute.c
level_3/fake/c/private-make-operate_process.c
level_3/fake/c/private-make-operate_validate.c
level_3/fake/c/private-make-operate_validate.h