** Also affects: glibc (Ubuntu) Importance: Undecided Status: New
-- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to tzdata in Ubuntu. https://bugs.launchpad.net/bugs/868395 Title: localtime_r multiple times slower for Europe/Moscow timezone Status in GLibC: Unknown Status in glibc package in Ubuntu: New Status in tzdata package in Ubuntu: Triaged Bug description: In version tzdata-2011j (tzdata-2011k also affected) was founded strange bug in russian timezones. Because of a law "On the Calculation of Time" there were changes in zone like: 3:00 Russia MSK/MSD 2011 changed to: 3:00 Russia MSK/MSD 2011 Mar 27 2:00s 4:00 - MSK But if no rule used for this change (using "-" instead of rule "Russia"), calling of system function localtime_r() takes more time (takes more than 40% time longer). I used following code for measuring: ============================== #include <time.h> #include <stdio.h> int main() { time_t t = time(0); int i; struct tm result; for(i=0; i < 10000000; i++) localtime_r(&t, &result); puts(ctime(&t)); return 0; } ============================== and also this sql code in mysql db: select benchmark(1000000, from_unixtime(1317044847)); For example, when I'm using new tzdata-2011j results are: 1. time ./a.out (c code) real 0m5.165s user 0m5.140s sys 0m0.000s 2. sql query mysql> select benchmark(1000000, from_unixtime(1317044847)); +-----------------------------------------------+ | benchmark(1000000, from_unixtime(1317044847)) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (1.03 sec). And when I'm using old tzdata-2008b: 1. time ./a.out (c code) real 0m1.675s user 0m1.450s sys 0m0.000s 2. sql query mysql> select benchmark(1000000, from_unixtime(1317044847)); +-----------------------------------------------+ | benchmark(1000000, from_unixtime(1317044847)) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (0.65 sec) This bug seemed critical on high loaded systems (for example, for databases that using unix timestamps). My configuration was: Description: Ubuntu 8.04.1 Release: 8.04 Packages: 2011j~repack-0ubuntu0.8.04 and 2008b-1ubuntu1 To manage notifications about this bug go to: https://bugs.launchpad.net/glibc/+bug/868395/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp