[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making sure I'm not checking email (or doing other things) too often
From: |
Marcin Borkowski |
Subject: |
Re: Making sure I'm not checking email (or doing other things) too often |
Date: |
Sun, 06 Mar 2016 14:26:47 +0100 |
User-agent: |
mu4e 0.9.13; emacs 25.1.50.6 |
On 2016-02-15, at 15:40, Michael Heerdegen <michael_heerdegen@web.de> wrote:
> Factoring out the greatest common divider would give you something like
> this:
>
> --8<---------------cut here---------------start------------->8---
> -*- lexical-binding: t -*-
>
> (defun stopwatch ()
> "Return a fresh stopwatch.
> This is a function accepting zero arguments that upon each call
> will return the time difference from its last call in seconds.
> When called the first time it will return nil."
> (let ((last-invocation nil))
> (lambda ()
> (prog1 (and last-invocation
> (time-to-seconds (time-subtract (current-time)
> last-invocation)))
> (setq last-invocation (current-time))))))
> --8<---------------cut-here---------------end--------------->8---
>
> With that, one could make your advice functions reference and use such a
> stopwatch object (each an individual one, of course).
Thanks. This is my version:
(defun create-stopwatch ()
"Return a closure which returns time (in seconds) since its
last invocation every time it is called."
(let (last-invocation-time (current-time))
(lambda ()
(prog1
(time-to-seconds (time-subtract (current-time) last-invocation-time))
(setq last-invocation-time (current-time))))))
I don't claim it to be better, but I noticed a strange phenomenon. When
I invoke the "stopwatch object" (closure, in fact) for the first time,
I get negative result. Why is that so?
> Regards,
>
> Michael.
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
- Re: Making sure I'm not checking email (or doing other things) too often,
Marcin Borkowski <=