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

Opened 8 years ago

Last modified 14 months ago

#30 reopened enhancement

Investigate possibility of using unlikely(), likely()

Reported by: decky Owned by: 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 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.

comment:2 Changed 7 years ago by svoboda

  • Resolution set to wontfix
  • Status changed from new to closed

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 7 years ago by svoboda

  • Component changed from unspecified to kernel/generic
  • Resolution wontfix deleted
  • Status changed from closed to reopened
  • Summary changed from Use unused(), unlikely(), likely() to Investigate possibility of using unlikely(), likely()
  • Type changed from enhancement to task

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 6 years ago by jermar

  • Type changed from task to enhancement

comment:5 Changed 5 years ago by jermar

  • Milestone changed from 0.5.0 to 0.5.1

comment:6 Changed 3 years ago by jermar

  • Milestone changed from 0.5.1 to 0.5.2

comment:7 Changed 14 months ago by jermar

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