[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Remote display-time-mail-file
From: |
Michael Albinus |
Subject: |
Re: Remote display-time-mail-file |
Date: |
Thu, 30 Sep 2010 15:07:34 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Eli Zaretskii <address@hidden> writes:
>> From: Stefan Monnier <address@hidden>
>> Cc: Michael Albinus <address@hidden>, address@hidden
>> Date: Sat, 18 Sep 2010 11:00:27 +0200
>>
>> > Maybe I'm missing something, but I don't see how this can help. For
>> > starters, time.el needs Tramp to check the remote every time, so the
>> > cache just gets in the way.
>>
>> But each use from time.el might end up calling some internal Tramp
>> functions several times, so the cache may still speed things up.
>
> That's true, but my conclusion from this is different: we probably
> should have finer granularity of the cache setting.
>
> I guess some of the internal Tramp functions need not be called any
> time soon after the first call, for example those that find out which
> method to use to access the remote and which scripts to run on the
> remote side. Other internal functions will need to run every time
> display-time-file-nonempty-p is called. And there could be those in
> between. So perhaps these internal functions should be categorized in
> some reasonable manner, and then corresponding values added to the
> repertoire of tramp-cache-inhibit-cache's values, so that Lisp
> programs could have finer control on what is being cached and when the
> cache is refreshed.
I did some tests. It is hard to predict, which primitive functions are
called where, and in majority thes are file-attributes, file-exists-p,
file-readable-p, file-writable-p. Other primitive functions do profit
from those cached values, or they aren't called as much that it is worth
to spend extra handling for caching.
Therefore, I propose the following patch:
--8<---------------cut here---------------start------------->8---
*** /home/albinus/src/emacs/lisp/files.el.~101670~ 2010-09-30
15:02:06.590646221 +0200
--- /home/albinus/src/emacs/lisp/files.el 2010-09-30 14:24:08.655019756
+0200
***************
*** 934,939 ****
--- 934,968 ----
(funcall handler 'file-remote-p file identification connected)
nil)))
+ (defcustom remote-file-name-inhibit-cache 10
+ "Inhibit remote file name cache read access, when `t'.
+ `nil' means to accept cache entries unconditionally. An integer
+ prevents using of cache entries if they are older than this
+ amount of seconds.
+
+ File attributes of remote files are cached for better performance.
+ If they are changed out of Emacs' control, the cached values
+ become invalid, and must be invalidated.
+
+ In case a remote file is checked regularly, it might be
+ reasonable to let-bind this variable to a value less then the
+ time period between two checks.
+
+ Example:
+
+ \(defun display-time-file-nonempty-p \(file)
+ \(let \(\(remote-file-name-inhibit-cache \(- display-time-interval 5)))
+ \(and \(file-exists-p file)
+ \(< 0 \(nth 7 \(file-attributes \(file-chase-links file)))))))"
+ :group 'files
+ :version "24.1"
+ :type `(choice
+ (const :tag "Do not inhibit file name cache" nil)
+ (const :tag "Do not use file name cache" t)
+ (integer :tag "Do not use file name cache"
+ :format "Do not use file name cache older then %v seconds"
+ :value 10)))
+
(defun file-local-copy (file)
"Copy the file FILE into a temporary file on this machine.
Returns the name of the local copy, or nil, if FILE is directly
--8<---------------cut here---------------end--------------->8---
Tramp would be adapted accordingly, of course.
Best regards, Michael.
- Re: Remote display-time-mail-file, (continued)
- Re: Remote display-time-mail-file, Eli Zaretskii, 2010/09/17
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/17
- Re: Remote display-time-mail-file, Stefan Monnier, 2010/09/17
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/17
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/17
- Re: Remote display-time-mail-file, Eli Zaretskii, 2010/09/17
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/18
- Re: Remote display-time-mail-file, Stefan Monnier, 2010/09/18
- Re: Remote display-time-mail-file, Eli Zaretskii, 2010/09/18
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/18
- Re: Remote display-time-mail-file,
Michael Albinus <=
- Re: Remote display-time-mail-file, Eli Zaretskii, 2010/09/30
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/30
- Re: Remote display-time-mail-file, Michael Albinus, 2010/09/18