You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/AWSCore/Code
lumberyard-employee-dm 098005afbc
AZStd::basic_string improvements (#6438)
* AZStd::basic_string improvements

The AZStd::basic_string class has a better implementation of the Short
String Optimization, which increases the amount of characters that can
be stored in a `basic_string<char>` from 15 characters to 22
characters(not-including null-terminating characters). For a
`basic_string<wchar_t>` on Windows the amount of characters that can be
stored increases from 7 to 10. Using `basic_string<wchar_t>` on Unix
platforms SSO character amount from 3 to 4 characters.

An additional benefit is that the size of the AZStd::basic_string class
has been reduced from 40 bytes to 32 bytes when using the
AZStd::allocator.
When using a stateless allocator with no non static data members such as
AZStd::stateless_allocator, the size of the AZStd::basic_string is 24
bytes.

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Corrected comments and updated type alias to usings for AZStd::basic_string

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Added Benchmarks for the basic_string and basic_fixed_string class

The benchmarks currently measure the speed of the `assign` overloads.
A benchmark has also been added to compare the speed swapping two
`basic_string` instances by 3 memcpy vs 3 pointer swap operations

Speed up string operation when in the iterator overload cases of the
`assign`, `append`, `insert` and `replace` function.
The code was always performing the logic to copy over a string that is
overlapping, without actually checking if the string was overlapping in
the first place.

Added an `az_builtin_is_constant_evaluated` macro that allows use of the
C++20 `std::is_constant_evaluated` feature to determine if an operation
is being performed at compile time vs run time.

That macro is being used to speed up the char_trait operations at run
time, by using the faster standard library functions.
For example char_traits::move now uses "memmove" at runtime, instead of
a for loop.

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Simplified string logic in AWSMetricsServiceApiTest.

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
4 years ago
..
Include Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
Platform [Linux] Update to use AWSNativeSDK 1.9.50 (#6715) 4 years ago
Source Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
Tests AZStd::basic_string improvements (#6438) 4 years ago
Tools/ResourceMappingTool Add pytest to Resource Mapping Tool requirements.txt (#6259) 4 years ago
CMakeLists.txt Update to use AWSNativeSDK 1.9.50 (#6618) 4 years ago
awscore_editor_files.cmake Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
awscore_editor_shared_files.cmake Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
awscore_editor_tests_files.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
awscore_files.cmake Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
awscore_resourcemappingtool_files.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
awscore_shared_files.cmake Move the header files in the AWS Core gem based on the latest gem structure guideline (#5178) 4 years ago
awscore_tests_files.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago