Re: [O] Discussion request: 15m tangle time, details follow

2014-06-20 Thread Grant Rettke
This is a nicer way, makes it obvious what *is* being used; uses dash.el:

(let* ((allowed '(exports
  file
  noweb
  noweb-ref
  session
  tangle))
   (new-ls
(--filter (member (car it) allowed)
  org-babel-common-header-args-w-values)))
  (setq org-babel-common-header-args-w-values new-ls))
Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
“Wisdom begins in wonder.” --Socrates
((λ (x) (x x)) (λ (x) (x x)))
“Life has become immeasurably better since I have been forced to stop
taking it seriously.” --Thompson


On Thu, Jun 19, 2014 at 8:26 PM, Grant Rettke  wrote:
> Just excluded what seemed excludable and got build time down to 8
> minutes from 15 minutes.
>
> Kept the following as it seems that it would allow the most important things:
>
> (session. :any)
> (noweb-ref  . :any)
> (noweb  . ((yes no tangle no-export strip-export)))
> (file   . :any)
> (tangle . ((tangle yes no :any)))
> (results. ((file list vector table scalar verbatim)
>(raw html latex org code pp drawer)
>(replace silent none append prepend)
>(output value)))
>
> Here is what I excluded:
>
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'cache org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'cmdline org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'colnames org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'comments org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'dir org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'eval org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'exports org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'epilogue org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'file-desc org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'hlines org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'mkdirp org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'no-expand org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'noeval org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'noweb-sep org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'padline org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'post org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'prologue org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'rownames org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'sep org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'shebang org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'tangle-mode org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'var org-babel-common-header-args-w-values))
> (setq org-babel-common-header-args-w-values
>   (assq-delete-all 'wrap org-babel-common-header-args-w-values))
> Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
> g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
> “Wisdom begins in wonder.” --Socrates
> ((λ (x) (x x)) (λ (x) (x x)))
> “Life has become immeasurably better since I have been forced to stop
> taking it seriously.” --Thompson
>
>
> On Thu, Jun 19, 2014 at 7:01 PM, Grant Rettke  
> wrote:
>> Understood. I will start testing.
>>
>> Just out of curiosity, knowing full well that it will break the
>> tangle, and also since I hadn't tried
>> the quick and dirty flag, I ran it with this to see how long it took:
>>
>> (setq org-babel-common-header-args-w-values nil)
>>
>> It went from 936 seconds (15 minutes)
>>
>> Down to 279 (4 minutes).
>>
>> Now I am wondering if it is worth converting my document *not* to use
>> property inheritance...
>>
>> What would you folks do?
>> Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
>> g...@wisdomandwonder.com | http://

Re: [O] Discussion request: 15m tangle time, details follow

2014-06-19 Thread Grant Rettke
Just excluded what seemed excludable and got build time down to 8
minutes from 15 minutes.

Kept the following as it seems that it would allow the most important things:

(session. :any)
(noweb-ref  . :any)
(noweb  . ((yes no tangle no-export strip-export)))
(file   . :any)
(tangle . ((tangle yes no :any)))
(results. ((file list vector table scalar verbatim)
   (raw html latex org code pp drawer)
   (replace silent none append prepend)
   (output value)))

Here is what I excluded:

(setq org-babel-common-header-args-w-values
  (assq-delete-all 'cache org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'cmdline org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'colnames org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'comments org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'dir org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'eval org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'exports org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'epilogue org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'file-desc org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'hlines org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'mkdirp org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'no-expand org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'noeval org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'noweb-sep org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'padline org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'post org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'prologue org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'rownames org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'sep org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'shebang org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'tangle-mode org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'var org-babel-common-header-args-w-values))
(setq org-babel-common-header-args-w-values
  (assq-delete-all 'wrap org-babel-common-header-args-w-values))
Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
“Wisdom begins in wonder.” --Socrates
((λ (x) (x x)) (λ (x) (x x)))
“Life has become immeasurably better since I have been forced to stop
taking it seriously.” --Thompson


On Thu, Jun 19, 2014 at 7:01 PM, Grant Rettke  wrote:
> Understood. I will start testing.
>
> Just out of curiosity, knowing full well that it will break the
> tangle, and also since I hadn't tried
> the quick and dirty flag, I ran it with this to see how long it took:
>
> (setq org-babel-common-header-args-w-values nil)
>
> It went from 936 seconds (15 minutes)
>
> Down to 279 (4 minutes).
>
> Now I am wondering if it is worth converting my document *not* to use
> property inheritance...
>
> What would you folks do?
> Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
> g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
> “Wisdom begins in wonder.” --Socrates
> ((λ (x) (x x)) (λ (x) (x x)))
> “Life has become immeasurably better since I have been forced to stop
> taking it seriously.” --Thompson
>
>
> On Thu, Jun 19, 2014 at 8:44 AM, Eric Schulte  wrote:
>> Grant Rettke  writes:
>>
>>> I still want to be using org,, so my plan for now then is to write a
>>> pre-processing script for before org-babel-tangle is run that:
>>>
>>> 1. Checks each headline
>>> 2. Checks if there is a source block
>>> 3. If that source block doesn't have a noweb-ref name, and there is
>>> another source block under that
>>> headline, then "merge" it with the next source block of the same
>>> nature in that heading.
>>>
>>> That is off the top of my head, and I will try it by hand, first and
>>> see if it tangles the same result.
>>>
>>> Thoughts?
>>
>> Perhaps an easier workaround would

Re: [O] Discussion request: 15m tangle time, details follow

2014-06-19 Thread Grant Rettke
Understood. I will start testing.

Just out of curiosity, knowing full well that it will break the
tangle, and also since I hadn't tried
the quick and dirty flag, I ran it with this to see how long it took:

(setq org-babel-common-header-args-w-values nil)

It went from 936 seconds (15 minutes)

Down to 279 (4 minutes).

Now I am wondering if it is worth converting my document *not* to use
property inheritance...

What would you folks do?
Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
“Wisdom begins in wonder.” --Socrates
((λ (x) (x x)) (λ (x) (x x)))
“Life has become immeasurably better since I have been forced to stop
taking it seriously.” --Thompson


On Thu, Jun 19, 2014 at 8:44 AM, Eric Schulte  wrote:
> Grant Rettke  writes:
>
>> I still want to be using org,, so my plan for now then is to write a
>> pre-processing script for before org-babel-tangle is run that:
>>
>> 1. Checks each headline
>> 2. Checks if there is a source block
>> 3. If that source block doesn't have a noweb-ref name, and there is
>> another source block under that
>> headline, then "merge" it with the next source block of the same
>> nature in that heading.
>>
>> That is off the top of my head, and I will try it by hand, first and
>> see if it tangles the same result.
>>
>> Thoughts?
>
> Perhaps an easier workaround would be to customize the value of
> `org-babel-common-header-args-w-values'.  This variable determines which
> header arguments are checked for in properties.  If you remove all
> header arguments from this variable which you know are not used in a
> property, it may dramatically speed up tangle time.
>
> This may reduce the utility of some convenience functions, but should
> not have too large of an impact on overall functionality.
>
> Best,
> Eric
>
> --
> Eric Schulte
> https://cs.unm.edu/~eschulte
> PGP: 0x614CA05D (see https://u.fsf.org/yw)



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-19 Thread Eric Schulte
Grant Rettke  writes:

> I still want to be using org,, so my plan for now then is to write a
> pre-processing script for before org-babel-tangle is run that:
>
> 1. Checks each headline
> 2. Checks if there is a source block
> 3. If that source block doesn't have a noweb-ref name, and there is
> another source block under that
> headline, then "merge" it with the next source block of the same
> nature in that heading.
>
> That is off the top of my head, and I will try it by hand, first and
> see if it tangles the same result.
>
> Thoughts?

Perhaps an easier workaround would be to customize the value of
`org-babel-common-header-args-w-values'.  This variable determines which
header arguments are checked for in properties.  If you remove all
header arguments from this variable which you know are not used in a
property, it may dramatically speed up tangle time.

This may reduce the utility of some convenience functions, but should
not have too large of an impact on overall functionality.

Best,
Eric

-- 
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D (see https://u.fsf.org/yw)



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Grant Rettke
I still want to be using org,, so my plan for now then is to write a
pre-processing script for before org-babel-tangle is run that:

1. Checks each headline
2. Checks if there is a source block
3. If that source block doesn't have a noweb-ref name, and there is
another source block under that
headline, then "merge" it with the next source block of the same
nature in that heading.

That is off the top of my head, and I will try it by hand, first and
see if it tangles the same result.

Thoughts?



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Grant Rettke
On Wed, Jun 18, 2014 at 3:18 AM, Thorsten Jolitz  wrote:
> Grant Rettke  writes:
>
>> The average build takes 15m.
>
> Which file do you mean - TC3F.org?
> Thats some 4400 lines, thus not _that_ big really. I once used a giant
> init.el copied from the web that had some 8000 lines (now I'm back to
> 2500 again ...).

Yes. Thank you for digging in. Thanks for the tip, I had not learned
out-org yet.



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Grant Rettke
On Wed, Jun 18, 2014 at 3:20 AM, Andreas Leha
 wrote:
> Just one quick idea:  Have you tried [fn:1]
> (setq org-babel-use-quick-and-dirty-noweb-expansion t)
>
> This can lead to dramatic speedups in my experience.

I have not because I am utilizing property inheritance; it makes it
really, really pleasant to work with the document.



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Grant Rettke
On Tue, Jun 17, 2014 at 9:41 PM, Aaron Ecay  wrote:
> Here you mean time to tangle, correct?

Yes, thank you for digging in.



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Aaron Ecay
Hi Sebastien,

2014ko ekainak 18an, Sebastien Vauban-ek idatzi zuen:
>
> Hi Aaron,
>
> Aaron Ecay wrote:
>> [...]
>> babel needs to fetch 30 properties per source block.  Indeed, this is
>> marked “deprecated” in the source, in favor of a system where there is
>> only one header arg.  This has been marked deprecated for almost exactly
>> a year in the code (Achim’s commit 90b16870 of 2013-06-23), but I don’t
>> know of any prominent announcement of the deprecation.
>
> I neither was aware of such a deprecation.
>
> Are you talking of the comment in function
> `org-babel-params-from-properties' (in ob-core.el)?
>
> Thought, I can't parse it yet the way you do -- without understanding
> much more of that code, as the comments differ in "at point of
> definition" vs "at point of call":
>
>  ;; DEPRECATED header arguments specified as separate property at
>  ;; point of definition
>
>  ;; header arguments specified with the header-args property at
>  ;; point of call

That also differs between the two methods.

,
|
| * foo
|   :PROPERTIES:...
|
| #+name: xyz
| #+begin_src
|   ...
| #+end_src
|
| * bar
|   :PROPERTIES:...
|
| #+call: xyz()
`

The current code looks for individual header arg properties at foo, but
for the property header-args at bar (for the #+call line)

>
> What you're talking about is for specifying header arguments in
> a subtree, anyway always at the same point:
>
>> [...] You’d then have to update your file:
>>
>> :PROPERTIES:
>> :exports: none
>> :tangle: no
>> :END:
>>
>> becomes
>>
>> :PROPERTIES:
>> :header-args: :exports none :tangle no
>> :END:
>>
>> The new system is also a bit inferior, in that it doesn’t allow header
>> arg inheritance as easily.  So with the one-prop-per-arg system the
>> following works as expected:
>>
>> * foo
>> :PROPERTIES:
>> :exports: none
>> :END:
>> ** bar
>> :PROPERTIES:
>> :tangle: no
>> :END:
>>
>> (src block here)
>>
>> On the other hand, in the new system there’s no way to specify some
>> header args at foo and some at bar; the lowest header-args property
>> wins.  (At least as far as I can see)
>
> Maybe the "+" mechanism for concatenating property strings would help
> here?

No, org-entry-get-with-inheritance will not continue climbing the tree
once it finds one instance of the property in question, as demonstrated
here:

,
| * foo
|   :PROPERTIES:
|   :quux+:abc
|   :END:
| ** bar
|:PROPERTIES:
|:quux+:foo
|:quux+:bar
|:END:
|
| #+BEGIN_SRC emacs-lisp
|   (org-entry-get nil "quux" t)
| #+END_SRC
|
| #+RESULTS:
| : foo bar
`


--
Aaron Ecay



Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Thorsten Jolitz
Thorsten Jolitz  writes:

> Grant Rettke  writes:
>
>> The average build takes 15m. 

> [with-current-buffer "TC3F.org]

> After this is done *once*, you can always switch between emacs-lisp and
> org-mode with outorg, It takes 0.4 sec to convert the whole file to org
> again
>
> ,--
> | (benchmark-run (outorg-edit-as-org '(4)))
> | (0.365756325 1 0.1380089740167)
> `--
>
> and 1.6 sec to convert it back to outshine (I have to fix this speed
> difference ;)
>
> ,-
> | (benchmark-run (outorg-copy-edits-and-exit))
> | (1.616835235 8 1.10669671098)
> `-

This thread inspired me to profile these two commands - they do roughly
the same thing, only in the opposite direction, and I found it strange
why converting from Source to Org should be 4x faster than converting
from Org to Source. 

It turned out that 

,
| kill-whole-line is an interactive compiled Lisp function in
| `simple.el'.
`

was the sole culprit (used for killing the source-block
ddelimiters). Its a lisp function and does too many things besides
killing the line. Replacing it with C function

,--
| delete-region is an interactive built-in function in `editfns.c'.
`--

improves performance to (on whole file TC3):

,-
| (benchmark-run (outorg-copy-edits-and-exit))
| (0.66580701 2 0.2889433360266)
`-

The remaining speed difference is partly because I undo the indendation 
introduced in the Org source-blocks before the conversion back to
source, and thus need to process the file twice. 

-- 
cheers,
Thorsten




Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Thorsten Jolitz
Grant Rettke  writes:

> The average build takes 15m. 

Which file do you mean - TC3F.org?
Thats some 4400 lines, thus not _that_ big really. I once used a giant
init.el copied from the web that had some 8000 lines (now I'm back to
2500 again ...). 

I converted that file to outshine, since its mainly one programming
language (emacs-lisp in this case):

[with-current-buffer "TC3F.org]
,-
| (benchmark-run (outorg-convert-org-to-outshine))
| (1.792675211002 8 1.04214547809)
`-

After this is done *once*, you can always switch between emacs-lisp and
org-mode with outorg, It takes 0.4 sec to convert the whole file to org
again

,--
| (benchmark-run (outorg-edit-as-org '(4)))
| (0.365756325 1 0.1380089740167)
`--

and 1.6 sec to convert it back to outshine (I have to fix this speed
difference ;)

,-
| (benchmark-run (outorg-copy-edits-and-exit))
| (1.616835235 8 1.10669671098)
`-

But normally you do not convert the whole buffer to Org with outorg,
just the subtree at hand, and thats instantly.

Then productivity means that your init file *is* in a programming
language mode (TC3F.el) and you can modify and eval your code
on-the-fly. Whenever you need to edit the comment text, you do

M-# M-#
,---
| M-x outorg-edit-as-org
`---

and when you are done, M-#

,---
| M-x outorg-copy-edits-and-exit
`---

Its just the reverse of Org-mode with souce-blocks, and in cases like an
Emacs init-file, when its mostly one programming language and the
source-code is more important than the text (and frequently modified),
this reverse approach might be more productive. 

PS 

I just figured that I ran the benchmarks on an outorg testing branch,
which is faster than master but not yet ready. So things might be a bit
slower with master branch, but in terms of seconds (maybe 2 or 3 sec to
convert the whole file?)

-- 
cheers,
Thorsten




Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Andreas Leha
Hi Grant,

Grant Rettke  writes:

> Good evening,
>
> Over the past few months I've been working on the same literate
> document. It has been a learning
> experience for me, trial and error has abounded. The key tenet that
> I've adhered too though is to truly
> embrace literate programming, and the more I learn the more it makes
> sense. The document has
> grown quite organically and it has been and continues to be a
> wonderful experience. What I need
> help, feedback, discussion, and more on is the build time.
>
> The average build takes 15m. It didn't start this way; it was about 3
> minutes way back when. The last time it
> got kind of big was 9m and I didn't think too much of it. After
> literally a day of additions, it shot up to 15m.
> I tried upgrading to the latest org release with no change. I also
> removed all of the non-tangleable text with no change there, either.To
> give a fair picture, I did publish the system here:
>
> https://github.com/grettke/home
>
> My specific request: I need help with pointers on where I should start
> looking to speed things up. My goal is to have a full powered literate
> programming system in org mode that is blazing fast. This is from a
> user perspective, I use it every chance I get now and have barely
> scratched the surface. Right now though I'm sort of hobbled by the
> build time. That is actually understating it, I can't really be
> productive anymore at all. Little
> changes take 15m each and if I test it the "right way", 30m. Usually I
> would make little changes and every
> so often make sure that it can rebuild itself; usually it may :).
>
> This build is documented in the github project; it only loads the
> absolute minimum required to do the build.
>
> Ideas: Separate the documents. Hack on org directly.
>
> Non-ideas: Faster hardware. More ram. Newer software.
>
> Details:
>
> Emacs 24.3.1.
> Org 8.2.6
> OSX 10.9 (software updated)
> Darwin orion 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13
> PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64
> 8core 2.x GHz, 16GB ram
> Anti-virus turned off (compliance)
>
> Please let me know any comments, questions, or concerns; looking
> forward to all and every thought
> and idea.

I do not have the time to look into this, but fortunately, other
have done so already ;-)

Just one quick idea:  Have you tried [fn:1]
(setq org-babel-use-quick-and-dirty-noweb-expansion t)

This can lead to dramatic speedups in my experience.

Best,

Andreas

>
> Where I may contribute is with time, effort, patience, cheerfulness,
> and experience.
>
> Kind regards,
>
> Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
> g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
> “Wisdom begins in wonder.” --Socrates
> ((λ (x) (x x)) (λ (x) (x x)))
> “Life has become immeasurably better since I have been forced to stop
> taking it seriously.” --Thompson

Footnotes:

[fn:1] 
(see 
article.gmane.org/gmane.emacs.orgmode/50625/match=problem+noweb+ref+property)




Re: [O] Discussion request: 15m tangle time, details follow

2014-06-18 Thread Sebastien Vauban
Hi Aaron,

Aaron Ecay wrote:
> [...]
> babel needs to fetch 30 properties per source block.  Indeed, this is
> marked “deprecated” in the source, in favor of a system where there is
> only one header arg.  This has been marked deprecated for almost exactly
> a year in the code (Achim’s commit 90b16870 of 2013-06-23), but I don’t
> know of any prominent announcement of the deprecation.

I neither was aware of such a deprecation.

Are you talking of the comment in function
`org-babel-params-from-properties' (in ob-core.el)?

Thought, I can't parse it yet the way you do -- without understanding
much more of that code, as the comments differ in "at point of
definition" vs "at point of call":

 ;; DEPRECATED header arguments specified as separate property at
 ;; point of definition

 ;; header arguments specified with the header-args property at
 ;; point of call

What you're talking about is for specifying header arguments in
a subtree, anyway always at the same point:

> [...] You’d then have to update your file:
>
>   :PROPERTIES:
>   :exports: none
>   :tangle: no
>   :END:
>
> becomes
>
>   :PROPERTIES:
>   :header-args: :exports none :tangle no
>   :END:
>
> The new system is also a bit inferior, in that it doesn’t allow header
> arg inheritance as easily.  So with the one-prop-per-arg system the
> following works as expected:
>
>   * foo
> :PROPERTIES:
> :exports: none
> :END:
>   ** bar
>  :PROPERTIES:
>  :tangle: no
>  :END:
>
>   (src block here)
>
> On the other hand, in the new system there’s no way to specify some
> header args at foo and some at bar; the lowest header-args property
> wins.  (At least as far as I can see)

Maybe the "+" mechanism for concatenating property strings would help
here?

Best regards,
  Seb

-- 
Sebastien Vauban




Re: [O] Discussion request: 15m tangle time, details follow

2014-06-17 Thread Nick Dokos
Grant Rettke  writes:

>
> This build is documented in the github project; it only loads the
> absolute minimum required to do the build.
>
> Ideas: Separate the documents. Hack on org directly.
>
> Non-ideas: Faster hardware. More ram. Newer software.
>
> Details:
>
> Emacs 24.3.1.
> Org 8.2.6
> OSX 10.9 (software updated)
> Darwin orion 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13
> PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64
> 8core 2.x GHz, 16GB ram
> Anti-virus turned off (compliance)
>
> Please let me know any comments, questions, or concerns; looking
> forward to all and every thought
> and idea.
>
> Where I may contribute is with time, effort, patience, cheerfulness,
> and experience.
>

Have you profiled the build? Do you know where the time is spent?
If not, that's where I'd start:

   (info "(elisp) Profiling")

Nick






[O] Discussion request: 15m tangle time, details follow

2014-06-17 Thread Grant Rettke
Good evening,

Over the past few months I've been working on the same literate
document. It has been a learning
experience for me, trial and error has abounded. The key tenet that
I've adhered too though is to truly
embrace literate programming, and the more I learn the more it makes
sense. The document has
grown quite organically and it has been and continues to be a
wonderful experience. What I need
help, feedback, discussion, and more on is the build time.

The average build takes 15m. It didn't start this way; it was about 3
minutes way back when. The last time it
got kind of big was 9m and I didn't think too much of it. After
literally a day of additions, it shot up to 15m.
I tried upgrading to the latest org release with no change. I also
removed all of the non-tangleable text with no change there, either.To
give a fair picture, I did publish the system here:

https://github.com/grettke/home

My specific request: I need help with pointers on where I should start
looking to speed things up. My goal is to have a full powered literate
programming system in org mode that is blazing fast. This is from a
user perspective, I use it every chance I get now and have barely
scratched the surface. Right now though I'm sort of hobbled by the
build time. That is actually understating it, I can't really be
productive anymore at all. Little
changes take 15m each and if I test it the "right way", 30m. Usually I
would make little changes and every
so often make sure that it can rebuild itself; usually it may :).

This build is documented in the github project; it only loads the
absolute minimum required to do the build.

Ideas: Separate the documents. Hack on org directly.

Non-ideas: Faster hardware. More ram. Newer software.

Details:

Emacs 24.3.1.
Org 8.2.6
OSX 10.9 (software updated)
Darwin orion 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13
PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64
8core 2.x GHz, 16GB ram
Anti-virus turned off (compliance)

Please let me know any comments, questions, or concerns; looking
forward to all and every thought
and idea.

Where I may contribute is with time, effort, patience, cheerfulness,
and experience.

Kind regards,

Grant Rettke | ACM, ASA, FSF, IEEE, SIAM
g...@wisdomandwonder.com | http://www.wisdomandwonder.com/
“Wisdom begins in wonder.” --Socrates
((λ (x) (x x)) (λ (x) (x x)))
“Life has become immeasurably better since I have been forced to stop
taking it seriously.” --Thompson