Ticket #30 (reopened task)

Opened 17 months ago

Last modified 7 months ago

Investigate possibility of using unlikely(), likely()

Reported by: decky Owned by: decky
Priority: minor Milestone: 0.5.1
Component: kernel/generic Version: mainline
Keywords: Cc:

Description

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

Change History

Changed 14 months ago by svoboda

  • component set to 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.

Changed 7 months ago by svoboda

  • status changed from new to closed
  • resolution set to wontfix

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.

Changed 7 months ago by svoboda

  • status changed from closed to reopened
  • component changed from unspecified to kernel/generic
  • type changed from enhancement to task
  • resolution wontfix deleted
  • summary changed from Use unused(), unlikely(), likely() to Investigate possibility of using unlikely(), likely()

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.

Note: See TracTickets for help on using tickets.