aboutsummaryrefslogtreecommitdiffstats
path: root/util/datetime/base_ut.cpp
diff options
context:
space:
mode:
authortobo <tobo@yandex-team.com>2022-08-25 07:36:11 +0300
committertobo <tobo@yandex-team.com>2022-08-25 07:36:11 +0300
commit62b3eaa578ea03c63d0fd1ee409e13e360b1ab93 (patch)
treec21c3b755623ef7e111d7786adb69103554318c3 /util/datetime/base_ut.cpp
parent25270694776a35000bcb18c5302b1ad1ba9b87a8 (diff)
downloadydb-62b3eaa578ea03c63d0fd1ee409e13e360b1ab93.tar.gz
speedup GmTimeR function
в профиле перфа Маркетного репорта постоянно вижу GmTimeR там в цикле вычитается по количеству дней в году и прибавляется по 1 году с 1970 по 2022 на каждый вызов В Маркете проблема стреляла и раньше в последней итерации функция становится на ~~30% быстрее системной gmtime_r %% ----------- GmTimeR --------------- samples: 20691 iterations: 264304536 iterations hr: 264M run time: 5.002055225 per iteration: 39.85866484 cycles ----------- gmtime_r --------------- samples: 17452 iterations: 188034528 iterations hr: 188M run time: 5.001259884 per iteration: 56.96146577 cycles %% текущая верся почти в 2 раза медленнее системной: %% ----------- GmTimeR --------------- samples: 12760 iterations: 100514931 iterations hr: 101M run time: 5.00096133 per iteration: 105.4334174 cycles ----------- gmtime_r --------------- samples: 17667 iterations: 192697896 iterations hr: 193M run time: 5.001356603 per iteration: 55.69031415 cycles %%
Diffstat (limited to 'util/datetime/base_ut.cpp')
-rw-r--r--util/datetime/base_ut.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/util/datetime/base_ut.cpp b/util/datetime/base_ut.cpp
index afc3f802eb..56b7496d19 100644
--- a/util/datetime/base_ut.cpp
+++ b/util/datetime/base_ut.cpp
@@ -10,7 +10,7 @@
#include <util/system/compat.h>
#include <util/random/random.h>
-#include <limits.h>
+#include <climits>
using namespace std::chrono_literals;
@@ -412,6 +412,8 @@ Y_UNIT_TEST_SUITE(DateTimeTest) {
Y_UNIT_TEST(TestInstantToString) {
UNIT_ASSERT_VALUES_EQUAL(TString("2009-08-06T15:19:06.023455Z"), ToString(TInstant::Seconds(1249571946) + TDuration::MicroSeconds(23455)));
+ UNIT_ASSERT_VALUES_EQUAL(TString("2022-08-23T13:04:43.023455Z"), ToString(TInstant::Seconds(1661259883) + TDuration::MicroSeconds(23455)));
+ UNIT_ASSERT_VALUES_EQUAL(TString("2122-11-23T15:12:26.023455Z"), ToString(TInstant::Seconds(4824889946) + TDuration::MicroSeconds(23455)));
UNIT_ASSERT_VALUES_EQUAL(TString("2009-08-06T15:19:06.023455Z"), (TInstant::Seconds(1249571946) + TDuration::MicroSeconds(23455)).ToString());
UNIT_ASSERT_VALUES_EQUAL(TString("2009-08-06T15:19:06Z"), (TInstant::Seconds(1249571946) + TDuration::MicroSeconds(23455)).ToStringUpToSeconds());
}