brokkoli_origin has quit [Ping timeout: 246 seconds]
brokkoli_origin has joined #commonlisp
X-Scale has joined #commonlisp
Akbar-Birbal has joined #commonlisp
ad-absurdum has joined #commonlisp
X-Scale has quit [Quit: Client closed]
Akbar-Birbal has left #commonlisp [#commonlisp]
decweb has quit [Ping timeout: 252 seconds]
X-Scale has joined #commonlisp
Akbar-Birbal has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 276 seconds]
cdegroot has quit [Ping timeout: 252 seconds]
X-Scale has quit [Quit: Client closed]
wacki has joined #commonlisp
amb007 has joined #commonlisp
bitspook has joined #commonlisp
skeemer has quit [Ping timeout: 248 seconds]
Pixel_Outlaw has quit [Quit: Leaving]
ad-absurdum has quit [Quit: Leaving]
mgl_ has joined #commonlisp
pve has joined #commonlisp
chomwitt has joined #commonlisp
shka has joined #commonlisp
istewart has quit [Quit: Konversation terminated!]
oneeyedalien has joined #commonlisp
traidare has joined #commonlisp
alternateved has joined #commonlisp
X-Scale has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
King_julian has joined #commonlisp
bobcave has joined #commonlisp
bobcave has quit [Changing host]
bobcave has joined #commonlisp
King_julian has quit [Ping timeout: 260 seconds]
King_julian has joined #commonlisp
semarie has quit [Ping timeout: 272 seconds]
<younder>
I have been thinking of the three modes of compilation. Compiling a function standalone. Compiling a module. Compiling a executable. There should be a fourth. Compiling a library. It each there is a limit to the amount of optimization can be done. The key here is in-lining.
<younder>
Futher-more CLOS can not be excluded. Compiler macros are essential here. What can I do if I KNOW this method wont be redefined. I know no-one changes this class. We have seen a factor of 2 in execution speed can be had by considering this.
<jackdaniel>
what do you mean by a module compilation? a file?
<jackdaniel>
regarding clos considerations, the concept you are mentioned is called "sealing"
<younder>
The problem with CL is that includes the compiler at runtime. This prevents a whole host of in-lining from being possible because you can never KNOW weather it will be changes or not.
<jackdaniel>
I wouldn't call it a problem
<younder>
jackdaniel: yes a file
<jackdaniel>
you can control (if the implementation supports it) the scope of compilation with a macro WITH-COMPILATION-UNIT
<jackdaniel>
you may wrap it around whole system compilation
<younder>
Thanks. that is useful to know
<jackdaniel>
it is conforming to expand with-compilation-unit to progn though; I think that SBCL retain compilation information across files though (if done that way)
<jackdaniel>
depending on the compiler policies, optimization settings may make inlining more or less likely too (the most surefire method though is a direct declaration)
<jackdaniel>
also note that scoping multiple files, if the compiler indeed does the fancy thing, may get intensive either space-wise or speed-wise (i.e slower compilation)
<jackdaniel>
even in (say) C you link multiple .o files that are already compiled
<ixelp>
GitHub - marcoheisig/fast-generic-functions: Seal your generic functions for an extra boost in performance.
<younder>
Yes global optimizations will significantly slow down the compile time. So use it sparingly - like just before a release.
<younder>
Again it would be useful to have the feature for a library.
<jackdaniel>
arguably, even in released program, you don't want to inline too much and seal too many generic functions, because you know - debugging, hackability and other very important things
<jackdaniel>
extending live programs is a merit, not demerit of common lisp
kopiyka has quit [Remote host closed the connection]
<jackdaniel>
(although I can think of scenarios where it would make sense)
<younder>
Hackabillity vs. speed yes a constant trade-off
<jackdaniel>
you can have a performant program that is still hackable, it is a false dichotomy
<younder>
But it should be under the programmers control. There are exceptions to exception a really clever compiler end up being really dumb.
<jackdaniel>
i.e inlining a sparingly called function will save you nil in practice
kopiyka has joined #commonlisp
<jackdaniel>
(and will cost you dearly with memory requirements if done pervasively)
<jackdaniel>
that said, as already mentioned, I agree that there are various scenarios
<younder>
Agreed in-lining should be at the compilers discretion. The programmers job is to say this is a compilation unit it will not change.
semarie has joined #commonlisp
<jackdaniel>
I'd say the other way around; programmer knows best what should and what must not be inlined ,)
<younder>
Look a good optimizer focuses on loops and in-lining code in loops. On in-lining stuff that is tightly coupled.
<younder>
Micro managing the compiler is so 1970's
<jackdaniel>
I don't see how this contradicts what I've said
<younder>
Mainly the compiler knows what is to be in-lined or not better than you.
* jackdaniel
hastily removes all declare notinline declarations from the codebase
<jackdaniel>
in any case, I don't have anything more to add, unless you are for some banter
kyoji has quit [Read error: Connection reset by peer]
<younder>
Thanks for your input. Will remember with-compilation-unit.
kyoji has joined #commonlisp
<younder>
In truth using SSA (Single Static Assignment) is pretty new in the world of Lisp compilers. It makes reasoning over flow a lot easier.
<younder>
Static Single Assignment
traidare has quit [Ping timeout: 252 seconds]
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
jadzi has joined #commonlisp
younder has quit [Remote host closed the connection]
younder has joined #commonlisp
alcor has joined #commonlisp
oneeyedalien has quit [Ping timeout: 252 seconds]
oneeyedalien has joined #commonlisp
oneeyedalien has quit [Ping timeout: 246 seconds]
pranav has quit [Remote host closed the connection]
ingeniot has joined #commonlisp
awlygj has joined #commonlisp
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #commonlisp
gooba has quit [Remote host closed the connection]
elderK has joined #commonlisp
elderK has quit [Client Quit]
msv has quit [Remote host closed the connection]
msv has joined #commonlisp
random-nick has joined #commonlisp
pranav has joined #commonlisp
<younder>
https://irclog.tymoon.eu/libera/ shows beach logs in irregularly on this channel any yet I never see it. hmm. I suspect foul play.
<ixelp>
TyNET
<younder>
forget it
<beach>
?
<younder>
Brain fart on my part. I was looking for xach
<beach>
Oh, OK.
<younder>
beach: Anyhow have you heard fro Gilbert lately?
Noisytoot has quit [Ping timeout: 252 seconds]
<beach>
gilberth: was active on #clschool yesterday.
<beach>
Er, I mean gilberth was active on #clschool yesterday.
decweb has joined #commonlisp
<younder>
Nice to know. jackdaniel said he hadn't heard from him recently.
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
flounders_ has quit [Ping timeout: 248 seconds]
flounders has joined #commonlisp
King_julian has quit [Ping timeout: 252 seconds]
random-nick has quit [Ping timeout: 252 seconds]
donleo has joined #commonlisp
bitspook has quit [Ping timeout: 248 seconds]
yitzi has joined #commonlisp
bitspook has joined #commonlisp
bitspook has quit [Ping timeout: 244 seconds]
edgar-rft_ has joined #commonlisp
edgar-rft has quit [Ping timeout: 260 seconds]
ingeniot has quit [Quit: Client closed]
bitspook has joined #commonlisp
bitspook has quit [Ping timeout: 264 seconds]
random-nick has joined #commonlisp
ingeniot has joined #commonlisp
bitspook has joined #commonlisp
lucasta has joined #commonlisp
chiselfu1e is now known as chiselfuse
King_julian has joined #commonlisp
rogersm has quit [Quit: Leaving...]
edgar-rft_ is now known as edgar-rft
bobcave has quit [Quit: Leaving]
jadzi has quit [Remote host closed the connection]