Follow us on Google+ Follow us on Facebook Follow us on Twitter

Opened 9 years ago

Last modified 20 months ago

#30 reopened enhancement

Investigate possibility of using unlikely(), likely()

Reported by: Martin Decky Owned by: Martin Decky
Priority: minor Milestone:
Component: helenos/kernel/generic Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:

Description

Use the constructs unused(), unlikely() and likely() in relevant parts of the code.

Change History (7)

comment:1 Changed 8 years ago by Jiri Svoboda

Component: unspecified

I am strongly against this. You are basically trying to hand-optimize the code for speed. If you can actually attain some noticeable speed improvement by putting this in a few extremely hot spots, then maybe. Otherwise you are just obfuscating the code. Moreover, in many times your guess about what's 'likely' can be utterly wrong.

comment:2 Changed 8 years ago by Jiri Svoboda

Resolution: wontfix
Status: newclosed

I am closing this ticket as it does not really describe an improvement. If you are concerned with the performance of the kernel, then I suggest you log a ticket for that. Analyzing/profiling the hot paths and finding a way to improve performance (noticeably) is a good ticket assignment. Suggesting to obfuscate the code for no provable benefit is not.

comment:3 Changed 8 years ago by Jiri Svoboda

Component: unspecifiedkernel/generic
Resolution: wontfix
Status: closedreopened
Summary: Use unused(), unlikely(), likely()Investigate possibility of using unlikely(), likely()
Type: enhancementtask

OK, maybe I don't have to close this ticket, but let me rephrase this. We are talking about hand-optimization. Hand-optimization should always be used as a last resort — avoid them as much as possible. What we can do:

  • Profile the kernel and determine the hottest functions/paths
  • Identify if() statements on these hottest paths
  • Try placing likely()/unlikely() in appropriate places and measure the performance benefit.
  • For individual uses of likely()/unlikely() which bring considerable performance improvement, consider integrating them.
  • Any use of likely()/unlikely() that cannot be supported by both logical explanation and measurement should be avoided.

Another note: What is the unused() macro? If it is meant to be some way of annotating unused variables, it might be a good idea, but completely unrelated. Please open a separate ticket for discussion thereof.

comment:4 Changed 7 years ago by Jakub Jermář

Type: taskenhancement

comment:5 Changed 6 years ago by Jakub Jermář

Milestone: 0.5.00.5.1

comment:6 Changed 3 years ago by Jakub Jermář

Milestone: 0.5.10.5.2

comment:7 Changed 20 months ago by Jakub Jermář

Milestone: 0.6.1
Note: See TracTickets for help on using tickets.