unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Emanuel Berg <moasen@zoho.com>
To: help-gnu-emacs@gnu.org
Subject: Re: point-at-final-line
Date: Mon, 29 Jan 2018 16:03:10 +0100	[thread overview]
Message-ID: <86d11sbtch.fsf@zoho.com> (raw)
In-Reply-To: mailman.8132.1517171769.27995.help-gnu-emacs@gnu.org

Eli Zaretskii wrote:

> Yes, counting lines is fast. But not counting
> lines is even faster.
>
> You don't need to compute the number of the
> current line, you just need to establish
> whether the line current ends at EOB. Right?
> And the line's end is given by
> line-end-position, right?

If you mean like this

(defun point-at-final-line-3 ()
  (= (line-end-position) (point-max)) )

I agree it looks the best thus far, however
with 100 000 lines it is still 0.000005 just
like the others. Anyone else feel free to
create an even bigger file

create-bogus-file () {
    local file=$1
    local lines=$2
    rm -r $file
    for l in {0..$lines}; do
        dd if=/dev/urandom count=1 2> /dev/null |
            sha256sum |
            ( read rnd _; echo $rnd >> $file )
    done
}
alias cbf=create-bogus-file

(defmacro measure-time (&rest body)
  "Measure and return the running time of the code block.
Not mine: http://nullprogram.com/blog/2009/05/28/"
  (declare (indent defun))
  (let ((start (make-symbol "start")))
    `(let ((,start (float-time)))
       ,@body
       (- (float-time) ,start))))

(defun point-at-final-line ()
  (= (line-number-at-pos)
     (line-number-at-pos (point-max)) ))
;; (insert (format "\n;; %f" (measure-time #'point-at-final-line)))
;; 0.000005

(defun point-at-final-line-2 ()
  (save-excursion
    (end-of-line) (= 1 (forward-line 1)) ))
;; (insert (format "\n;; %f" (measure-time #'point-at-final-line-2)))
;; 0.000006

(defun point-at-final-line-3 ()
  (= (line-end-position) (point-max)) )
;; (insert (format "\n;; %f" (measure-time #'point-at-final-line-3)))
;; 0.000006

-- 
underground experts united
http://user.it.uu.se/~embe8573


  parent reply	other threads:[~2018-01-29 15:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-27  1:14 point-at-final-line Emanuel Berg
2018-01-27  1:36 ` point-at-final-line Ben Bacarisse
2018-01-27  1:52   ` point-at-final-line John Mastro
2018-01-27  2:50   ` point-at-final-line Emanuel Berg
     [not found]   ` <mailman.8058.1517017989.27995.help-gnu-emacs@gnu.org>
2018-01-27  2:56     ` point-at-final-line Emanuel Berg
2018-01-27  3:02     ` point-at-final-line Emanuel Berg
2018-01-27  6:11       ` point-at-final-line Marcin Borkowski
     [not found]       ` <mailman.8063.1517033499.27995.help-gnu-emacs@gnu.org>
2018-01-27  7:05         ` point-at-final-line Emanuel Berg
2018-01-28 16:06       ` point-at-final-line Stefan Monnier
     [not found]       ` <mailman.8116.1517155644.27995.help-gnu-emacs@gnu.org>
2018-01-28 18:59         ` point-at-final-line Emanuel Berg
2018-01-28 20:36           ` point-at-final-line Eli Zaretskii
     [not found]           ` <mailman.8132.1517171769.27995.help-gnu-emacs@gnu.org>
2018-01-29 15:03             ` Emanuel Berg [this message]
2018-01-29 16:04               ` point-at-final-line Eli Zaretskii
     [not found]               ` <mailman.8177.1517241890.27995.help-gnu-emacs@gnu.org>
2018-01-29 16:40                 ` point-at-final-line Emanuel Berg
2018-01-29 17:51                   ` point-at-final-line Eli Zaretskii
     [not found]                   ` <mailman.8185.1517248285.27995.help-gnu-emacs@gnu.org>
2018-01-30  2:18                     ` point-at-final-line Emanuel Berg
2018-01-30  3:32                       ` point-at-final-line Eli Zaretskii
2018-01-30  3:50       ` point-at-final-line Stefan Monnier
     [not found]       ` <mailman.8212.1517284260.27995.help-gnu-emacs@gnu.org>
2018-01-30 14:52         ` point-at-final-line Emanuel Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86d11sbtch.fsf@zoho.com \
    --to=moasen@zoho.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).