From: Vincent T. <vt...@un...> - 2011-10-26 11:48:38
|
On Wed, 26 Oct 2011, Cedric BAIL wrote: > On Wed, Oct 26, 2011 at 11:13 AM, Vincent Torri <vt...@un...> wrote: >> On Wed, 26 Oct 2011, Cedric BAIL wrote: >>> On Wed, Oct 26, 2011 at 10:55 AM, Vincent Torri <vt...@un...> wrote: >>>> Eina includes eina_inline_lock_posix.h on something else than Windows, >>>> hence pthread.h. _GNU_SOURCE is not defined. >>>> >>>> Suppose now that a user of Eina does this: >>>> >>>> #include <Eina.h> >>>> #include <pthread.h> >>>> >>>> The user will not have the possibility to features available with >>>> _GNU_SOURCE (like CPU_SET for example. I have that problem with Enesim), >>>> except by defining it just before including Eina.h. Which is not the best >>>> solution, I think. >>>> >>>> The problem, here, is that lock stuff is only inlined functions. The >>>> problem will be solved if they are in a source file. Maybe at the >>>> beginning, having these functions inlined was interesting because they >>>> were short. I'm not sure that keeping them inlined is really useful, now. >>> >>> As from a performance point of view, it really matter to have them >>> inlined or not. Function call does cost. >> >> I know that, but i would like to have numbers, here, to verify it's worth >> having them inlined. Note that I'm talking about the posix part, not the >> 'void' or windows part. >> >> If your argument is : "no numbers are needed, it's faster", then why not >> defining all the functions inlined ? > > I don't have access at the moment on machine where that does matter. > But to put stuff into perspective, Eina_Magic check could cost around > 10% of your time and it's just a function call with an if inside, much > simpler that taking a lock. So I don't have number, but it's just way > better to avoid the 10s instructions that are needed to do a function > call. > And why not inlining everything, that was a sarcasm... > that why we use static inline > instead of a macro, gcc can choose to inline the function or not > depending on all the cost implied by the function call. And we don't > put all function inlined, because that would just increase the binary > size and invalidate cache to much. So it is only a solution for very > small function called very often. Look at the function eina_lock_take() in the posix file : 67 lines (with the defines). Do you call that a small function ? And I perfectly remember you telling to use **static** inline to force gcc to inline the function. Now you're saying that gcc will sometimes inline it, sometimes not ? You're contradicting yourself. > -- > Cedric BAIL > > ------------------------------------------------------------------------------ > The demand for IT networking professionals continues to grow, and the > demand for specialized networking skills is growing even more rapidly. > Take a complimentary Learning@Cisco Self-Assessment and learn > about Cisco certifications, training, and career opportunities. > http://p.sf.net/sfu/cisco-dev2dev > _______________________________________________ > enlightenment-devel mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > |