From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: encode-time vs decode-time Date: Wed, 21 Aug 2019 13:20:50 -0700 Organization: UCLA Computer Science Department Message-ID: <23355b15-fdb2-4f17-8203-82a493ddd3fd@cs.ucla.edu> References: <502b23f8-58ed-38ff-ae50-fae391129a10@cs.ucla.edu> <87v9viuivo.fsf@mouse.gnus.org> <83blx2cr2o.fsf@gnu.org> <8336iecfvr.fsf@gnu.org> <68d24d6a-d427-baef-27e9-ea1cbbd64c18@cs.ucla.edu> <87sgqd9plt.fsf@mouse.gnus.org> <89271843-6d47-8315-ed9a-540657298985@cs.ucla.edu> <87v9uvmsfa.fsf@mouse.gnus.org> <83af2f70-480b-6e5f-06a5-876224e2b715@cs.ucla.edu> <88b57699-fbdb-bd43-6627-f7491b834955@cs.ucla.edu> <87tvaag54l.fsf@alphapapa.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="27406"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 Cc: emacs-devel@gnu.org To: Adam Porter Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 21 22:21:34 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i0X6s-0006zX-9d for ged-emacs-devel@m.gmane.org; Wed, 21 Aug 2019 22:21:34 +0200 Original-Received: from localhost ([::1]:54260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i0X6r-0000me-6W for ged-emacs-devel@m.gmane.org; Wed, 21 Aug 2019 16:21:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60682) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i0X6F-0000ij-Fe for emacs-devel@gnu.org; Wed, 21 Aug 2019 16:20:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i0X6D-0001Hl-Q5 for emacs-devel@gnu.org; Wed, 21 Aug 2019 16:20:54 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:56446) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i0X6D-0001H8-Jx for emacs-devel@gnu.org; Wed, 21 Aug 2019 16:20:53 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id C97E91626D4; Wed, 21 Aug 2019 13:20:51 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id OUXhxc0MjnDX; Wed, 21 Aug 2019 13:20:50 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E0A951626E2; Wed, 21 Aug 2019 13:20:50 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id JtUwEeVhPn4I; Wed, 21 Aug 2019 13:20:50 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id BAEF61626D4; Wed, 21 Aug 2019 13:20:50 -0700 (PDT) In-Reply-To: <87tvaag54l.fsf@alphapapa.net> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239486 Archived-At: Adam Porter wrote: > Forgive me for being late to this discussion. After struggling with > using and manipulating date/time values in Emacs, I came up with this: > > https://github.com/alphapapa/ts.el I looked briefly at it, and don't see any compatibility issues - not that I understand all the code, which depends on packages I don't use. The code's comments say that format-time-string is too slow. What performance issues did you run into? At any rate I think you'll find that this: (string-to-number (format-time-string "%Y" (ts-unix struct))) is more efficient written this way: (nth 5 (decode-time (ts-unix struct))) and I expect you can speed up the code further by caching the entire result of decode-time instead of calling format-time-string for each component. Also, the timestamp functions in Emacs 27 should simplify ts.el, once you can assume Emacs 27. For example, in Emacs 27 you can do something like this: (decoded-time-add X (make-decoded-time :year 10)) to add 10 years to a broken-down timestamp X. One more thing: ts.el's extensive use of float-time is fine for calendrical applications but has limited resolution (2**-22 s or about 2e-7 s for today's timestamps) and so would be problematic for apps requiring higher-resolution timestamps.