[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] spee-up table refresh
From: |
Nicolas Goaziou |
Subject: |
Re: [O] spee-up table refresh |
Date: |
Mon, 09 Jan 2017 00:24:10 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Hello,
> I don't understand those 3 lines
The prevent matching a table below
#+begin_example
| I'm not a table |
#+end_example
> without them (the 688 tests work as expected). Those lines indirectly
> call (org-element--cache-put) a quadratic number of times. For a 1000
> rows table this is 501500 times (about 1000x1000/2 times).
Note that recalculating a table is inherently quadratic.
> Here is a test case.
>
> 1- First create a 1000 row table:
>
> #+BEGIN_SRC elisp :results none
> (goto-char (point-max))
> (let ((i 1000))
> (while (> i 0)
> (insert (format "| %4s | |\n" i))
> (setq i (1- i))))
> (insert "#+TBLFM: $2=$1*10\n")
> #+END_SRC
>
> 2- Then, with point in the table, type C-u C-c *
I limited calls to `org-element-at-point'. It should be much faster now.
Thank you.
Regards,
--
Nicolas Goaziou