Re: [PATCH 1/1] RDMA/cm: Delete two redundant condition branches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2021/5/12 3:56, Jason Gunthorpe wrote:
> On Mon, May 10, 2021 at 05:08:40PM +0800, Zhen Lei wrote:
>> The statement of the last "if (xxx)" branch is the same as the "else"
>> branch. Delete it to simplify code.
>>
>> No functional change.
>>
>> Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx>
>> ---
>>  drivers/infiniband/core/cm.c | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
>> index 0ead0d223154011..510beb25f5b8a0b 100644
>> --- a/drivers/infiniband/core/cm.c
>> +++ b/drivers/infiniband/core/cm.c
>> @@ -668,8 +668,6 @@ static struct cm_id_private *cm_insert_listen(struct cm_id_private *cm_id_priv,
>>  			link = &(*link)->rb_right;
>>  		else if (be64_lt(service_id, cur_cm_id_priv->id.service_id))
>>  			link = &(*link)->rb_left;
>> -		else if (be64_gt(service_id, cur_cm_id_priv->id.service_id))
>> -			link = &(*link)->rb_right;
>>  		else
>>  			link = &(*link)->rb_right;
>>  	}
>> @@ -700,8 +698,6 @@ static struct cm_id_private *cm_find_listen(struct ib_device *device,
>>  			node = node->rb_right;
>>  		else if (be64_lt(service_id, cm_id_priv->id.service_id))
>>  			node = node->rb_left;
>> -		else if (be64_gt(service_id, cm_id_priv->id.service_id))
>> -			node = node->rb_right;
>>  		else
>>  			node = node->rb_right;
>>  	}
> 
> I don't like this, if you want to reorganize this function then it
> should be written in the normal pattern for this kind of comparision
> 
>  if (a < b)
>    ..
>  else if (a > b)
>    ..
>  else // a == b
>    ..
> 
> You can see the a==b clause written explicitly above this if ladder:
> 
> 		if ((cur_cm_id_priv->id.service_mask & service_id) ==
> 		    (service_mask & cur_cm_id_priv->id.service_id) &&
> 		    (cm_id_priv->id.device == cur_cm_id_priv->id.device)) {

Right,So we'd better rewrite it with this set of judgments. This is because
the judgment of (a < b) and (a > b) is performed N times before the judgment
of (a == b) is performed. Therefore, the above modification you mentioned can
improve the search performance.

> 
> Which is why the trailing else is just unexectuable code.
> 
> Jason
> 
> .
> 




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux