Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #781
| From | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| Newsgroups | comp.compilers |
| Subject | Re: basic question about cps |
| Date | 2012-11-14 11:13 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <12-11-010@comp.compilers> (permalink) |
| References | <12-11-004@comp.compilers> |
> It seems to me that if one performs the cps transformation one is left
> with many 'computed' calls (that is call to variables holding
> procedure values, namely, the continuation).
Yes. Every additional "computed call" (aka indirect call) corresponds
to a "return" in the non-CPS version of the code.
> It seems that compiling such 'computed' calls would be much slower
> than compiling 'direct' calls to known procedures.
That's the wrong comparison: the non-CPS version wouldn't see direct
calls there, but would see `return's instead.
Also, you're talking about "compiling" being "slower": are you really
concerned about the speed of compilation, or the speed of the
generated code?
The performance of "return" versus "indirect call" depends on many
factors, but it's probably important to try and make sure that the
"return-like indirect calls" are compiled to code which the CPU
recognizes as "some sort of return", in order for the
branch-prediction to work better (CPUs keep an internal&hidden stack
to try and predict the destination of return instructions).
Stefan
Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
basic question about cps n.oje.bar@gmail.com - 2012-11-12 11:05 -0800
Re: basic question about cps torbenm@diku.dk (Torben Ægidius Mogensen) - 2012-11-14 11:25 +0100
Re: basic question about cps Stefan Monnier <monnier@iro.umontreal.ca> - 2012-11-14 11:13 -0500
Re: basic question about cps n.oje.bar@gmail.com - 2012-11-21 09:27 -0800
csiph-web