On 04/02/16 15:58, [email protected] wrote:
> Hi,
>
> On Thu, Feb 04, 2016 at 03:48:17PM +0000, Tom Hacohen wrote:
>> On 04/02/16 15:18, Hermet Park wrote:
>>> my point is not  EINA_UNUSED nor animator.
>>>
>>> As you mentioned, event_info is used for sometimes.
>>>
>>> How many scenarios will use those event_info and desc in the future?
>>> Im worring about our code is getting more long and dirty because of this.
>>> See our evas_object_smart_callback and evas_object_event_callback function 
>>> prototypes.
>>>
>>> I'm curious if we could provide simpler version.
>>
>> event_info: a lot.
>> desc: debatable, though maybe bindings will make good use of it to ease
>> attaching to callbacks. We are not entirely sure, but we wanted it
>> because we had some cases in mind (that I don't remember at the moment)
>> where we thought this could prove useful.
>>
>> smart callbacks have event_info, and it's useful, so I don't see your point.
>
> Why not having something like
>
> _event_cb(void *data, Event *ev) {...}
>
> with
>
> typedef struct {
>     Eo *obj
>     Eo_Event_Description2 *desc
>     void *event_info
> } Event;
>
> I wouldnt put *data in this structure since its more often used than
> obj/desc/event_info.
>

I'll write here what I wrote on IRC so everyone can see.

I love this idea, but I do have some comments, one of which may mean 
this change is not be feasible.

It really solves our problem with unused, and it actually feels elegant.
obj is also used, maybe not as often as data, but also often used. 
Either way, data is almost always cast and set to a local variable, so 
how often it's used doesn't really matter, so if we go down this path, 
we should move everything there.

I have one major issue with this approach though. Performance. On most 
modern ABIs function parameters are passed in registers (first few). 
Your change will change register assignment (passing parameters) to 
memory assignment (setting the local struct). Memory caches nowadays are 
really fast, so maybe it won't pose an issue, but it is a concern we 
need to check. Another issue is the redirect (memory read) when 
accessing the members of this struct vs a register read.

This may sound like nothing, but callbacks are a very hot path in the 
EFL and we work very hard to make them fast.

--
Tom.



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to