diff --git a/ApplicationLibCode/UnitTests/RiaStdStringTools-Test.cpp b/ApplicationLibCode/UnitTests/RiaStdStringTools-Test.cpp index 07732214de..e665f53204 100644 --- a/ApplicationLibCode/UnitTests/RiaStdStringTools-Test.cpp +++ b/ApplicationLibCode/UnitTests/RiaStdStringTools-Test.cpp @@ -3,6 +3,7 @@ #include "RiaStdStringTools.h" #include +#include //-------------------------------------------------------------------------------------------------- /// @@ -57,3 +58,59 @@ TEST( RiaStdStringToolsTest, TrimStrings ) EXPECT_EQ( text, expectedText ); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST( RiaStdStringToolsTest, DISABLED_PerformanceConversion ) +{ + size_t itemCount = 1000000; + std::string valueAsString = "1234567"; + + int intValue = 0; + + { + auto start = std::chrono::high_resolution_clock::now(); + + for ( size_t i = 0; i < itemCount; i++ ) + { + intValue = std::stoi( valueAsString ); + } + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << "std::stoi (no try/catch) " << std::setw( 9 ) << diff.count() << " s\n"; + } + + { + auto start = std::chrono::high_resolution_clock::now(); + + for ( size_t i = 0; i < itemCount; i++ ) + { + try + { + intValue = std::stoi( valueAsString ); + } + catch ( ... ) + { + } + } + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << "std::stoi incl try/catch" << std::setw( 9 ) << diff.count() << " s\n"; + } + + { + auto start = std::chrono::high_resolution_clock::now(); + + for ( size_t i = 0; i < itemCount; i++ ) + { + std::from_chars( valueAsString.data(), valueAsString.data() + valueAsString.size(), intValue ); + } + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << "std::from_chars " << std::setw( 9 ) << diff.count() << " s\n"; + } +}