From 0c3668573d3de1d9bfd3572ac57d36925919375a Mon Sep 17 00:00:00 2001 From: Markus Gans Date: Mon, 17 Apr 2017 01:03:14 +0200 Subject: [PATCH] Speed up FString::setNumber() by using a decimal string lookup table --- ChangeLog | 4 ++++ src/fstring.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71a6a0bf..94f2992c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-04-17 Markus Gans + * Speed up FString::setNumber() by using a decimal + string lookup table + 2017-04-15 Markus Gans * Fix unsigned integer underflow in FString::_insert() diff --git a/src/fstring.cpp b/src/fstring.cpp index d370e88c..b80ccd0f 100644 --- a/src/fstring.cpp +++ b/src/fstring.cpp @@ -1015,7 +1015,7 @@ FString& FString::setNumber (long num) do { - *--s = wchar_t(int(num%10) + '0'); + *--s = L"0123456789"[num % 10]; num /= 10; } while ( num ); @@ -1038,7 +1038,7 @@ FString& FString::setNumber (uLong num) do { - *--s = wchar_t(int(num%10) + '0'); + *--s = L"0123456789"[num % 10]; num /= 10; } while ( num ); @@ -1102,7 +1102,7 @@ FString& FString::setFormatedNumber (long num, char separator) do { - *--s = wchar_t(int(num%10) + '0'); + *--s = L"0123456789"[num % 10]; num /= 10; if ( num && ++n % 3 == 0 ) @@ -1133,7 +1133,7 @@ FString& FString::setFormatedNumber (uLong num, char separator) do { - *--s = wchar_t(int(num%10) + '0'); + *--s = L"0123456789"[num % 10]; num /= 10; if ( num && ++n % 3 == 0 )