|
From: | Gubinelli Massimiliano |
Subject: | Re: [Texmacs-dev] Revised patch: Speedup in startup time |
Date: | Sun, 14 Jun 2009 22:25:33 +0200 |
Hi, On 14 juin 09, at 22:22, Norbert Nemec wrote:
Inlining is safe, even with static variables.The C++ standard defines the "inline" keyword as a hint without any semantic meaning. The compiler may decide about inlining a function independent of whether the keyword is given. I do not even know whether the keyword has any influence at all in modern compilers.As Joris states, the code that Massimiliano suggests is basically what the compiler produces internally from my last solution. (except that I did not reuse the variable between the two functions)
Ok. For me it wasn't clear if a static variable in an inline function is allocated for each object file or once in each program. A programmer could need both of these behaviors so there should be some way to differentiate them. What is the default, how to switch from one to the other?
Massimiliano
Greetings, Norbert Joris van der Hoeven wrote:On Sun, Jun 14, 2009 at 06:36:56PM +0200, Gubinelli Massimiliano wrote:Hi Norbert,I'm not sure about the behaviour of static variables in inline functions. What about the following code?extern url url_none_constant;inline url url_none () { if (is_nil(url_none_constant)) url_none_constant = as_url (tree("none")); return url_none_constant; }inline bool is_none (url u) { return u->t == url_none()->t; }I think that this is the kind of code generated by the compiler.A boolean is used for indicating whether the static variable is used forthe first time. This probably remains correct for inline routines, but it is true that I am not sure. I will implement something else. Best wishes, Joris _______________________________________________ Texmacs-dev mailing list address@hidden http://lists.gnu.org/mailman/listinfo/texmacs-dev_______________________________________________ Texmacs-dev mailing list address@hidden http://lists.gnu.org/mailman/listinfo/texmacs-dev
[Prev in Thread] | Current Thread | [Next in Thread] |