From nobody Sun Feb 8 22:48:50 2026 Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F32735CB64 for ; Fri, 9 Jan 2026 13:00:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767963641; cv=none; b=PeTit1FBVJL21debv4Nlsv508oVy9PaM3KWIfWRM5eVht6YkhR1xWMJFY8zoLJpgtu/mmqozm84PUNY3n6XbVNf8gy+BSVhLsEB+8x3UMj+jvvn5CVUyzM6yMMDcYk/QIbIYq6Gd6ui9X7kyXVGTIKCfOfqwb7wSKP9/4CAhqHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767963641; c=relaxed/simple; bh=qFOiFrQ22bp9ubPDeW8ptesz6gYdsp1wUr4p9MOrwe4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sM2ADtZ8njp5rMCJ8pFzx5ze5j2MhiQn4e0MCUbpWAVt0km1ukLleE/2V0RPTvSD/ZccvU8K99Jcyc6nDZU26P1sPZRC2Qe4NqbMjpEapvkMCrlzUmbS5L7xqw5uq/PgmsrEOssxZCbLUIsIGuEsBBxaR1Z8ZOcZ4DGraZV0rco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=R5+5jieY; arc=none smtp.client-ip=209.85.214.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="R5+5jieY" Received: by mail-pl1-f194.google.com with SMTP id d9443c01a7336-2a0d67f1877so35158885ad.2 for ; Fri, 09 Jan 2026 05:00:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767963639; x=1768568439; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EDRdffxeTKmKE87zhNPKSisz6ECoek9qhLj1oBu4sdg=; b=R5+5jieYo/+P3mN5FwAfoVkjNxUJKdkKwq0VZUy5gVW2UVotL+tGROJ4u2LLNNTSzu /nk58E2jI0/oS+yrnLiRw2qRBD7RfRJK2u3zWf9oCufjVDayjozTGFUwjDblkfARhOAb N8iDhJS7u0KtrG05i6MSxcoqaXXQc7Tnxou5VITZrlkWX/T8sVIWmfT6DEZrH8caZb7u dzexERjjkH0m/R6iSpMuS2VCqpYU6AgmTrJYL+7VP/6jPpfFE1xm24g+M3UuzKdf921e En2qtBg3PLcVQDqb/x0aKYi2HGbCSlVlSduX+pyp4qTeqCdLgUZk+dpdpgXs2156XU3n iZuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767963639; x=1768568439; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EDRdffxeTKmKE87zhNPKSisz6ECoek9qhLj1oBu4sdg=; b=BRA07hQ97uvavFZKwBu8rCTIklQkW0XM3t2xa+XPk30HaIBrV3ppOiGnx8IdD+WkFa G7V1IXubll+DJHs4Yol4jBDI8chLqUvwi3/Nj4ZXADndaw6c6SVfZknjRLJ+6clIoIZG iLYtN6dopYkgOgNJ+jLwHJAvC+YTu6S56h6mtL3joMVZ9ps8/VELuLf0JqYyOSZPoqKx iTy8BcwKnJD3cakK3bl8BM3Nlg9C3vPQLdRjgAXv3ZKRL+15GX+S4+TdVQZcZ/ujOeTt 6NjCnt9wcpYnaj/5XJnIT0jvqSDR8c+pnMZKbvgeNn/98o7VWBIq5l4WKejKyFUkq4HA bM+Q== X-Forwarded-Encrypted: i=1; AJvYcCU/xm/vSgZ/yKBrwYqSdDDeTwaDZmVlgZ/raniqwEcqI7juOeUOdxvGSVUmvlT/lE1pl2IxHWjC1+A1Prc=@vger.kernel.org X-Gm-Message-State: AOJu0YwU8IZ7s1XN9yRepz2dxx20pO3mjVjPpNFtPWHuMo7o4XmNpfRe JfeFQr/h4vmgqj619segco6YF9wo5co8GOtdYzKpC2NcmFhQcJ8p6ICv X-Gm-Gg: AY/fxX5HlQgOn/ncpr151IQ8NSqzyaIB2+BwKZhNZv8fjUYBiVIS99NIalXuCgVGLtN SgZ8FRrMGCkD9QnwdWw40jWlajMTfCAFJCLIIN6h1PG31c8hdlY+jPZYp27n7Wr8Tz+A5ngyHFq eK+4AJAMYmDtqfG3bEmcm4ILWYcoP5j0NR9JTA+uhzcWQsoFnInd8OlYA0UPZ++yr4Lqu9uLrKt cInf9rvhlMqFag+DjUXzEeORFBml5CHTTY1GMVJa5KXw58hURon5vRDIOvEzzIAyHNn96zjYLih 5PWaXI+fM6syvYQu0YGHF95iLhVhFLpEr1/66rfYIH4D3JHBvdPpni5AUfBGVMhnRoZ+HXMFAlX 2ZS1nwdto97Tw6FChewXrHweh49ur7gkFiFe/lawlF3H9yYqN1opjZEbhpe68lBvBI9IyHOPrEo U7Q2hiRYIs3LdYWVaJMWP9GdA4d4Y= X-Google-Smtp-Source: AGHT+IFnznz6DyLtGA4vTT4bY5CXqP3/QuUv/y4X6750FOCEng8nQ9cRSwMuDPg3wuxcLWTEgVAF4w== X-Received: by 2002:a17:903:2448:b0:2a1:4293:beb9 with SMTP id d9443c01a7336-2a3ee4edf78mr78283995ad.58.1767963639357; Fri, 09 Jan 2026 05:00:39 -0800 (PST) Received: from pengdl-pc.mioffice.cn ([43.224.245.249]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c3a328sm104927325ad.4.2026.01.09.05.00.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 05:00:38 -0800 (PST) From: Donglin Peng To: ast@kernel.org, andrii.nakryiko@gmail.com, eddyz87@gmail.com Cc: zhangxiaoqin@xiaomi.com, ihor.solodrai@linux.dev, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Donglin Peng , Alan Maguire , Andrii Nakryiko Subject: [PATCH bpf-next v12 10/11] libbpf: Optimize the performance of determine_ptr_size Date: Fri, 9 Jan 2026 21:00:02 +0800 Message-Id: <20260109130003.3313716-11-dolinux.peng@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260109130003.3313716-1-dolinux.peng@gmail.com> References: <20260109130003.3313716-1-dolinux.peng@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Donglin Peng Leverage the performance improvement of btf__find_by_name_kind() when BTF is sorted. For sorted BTF, the function uses binary search with O(log n) complexity instead of linear search, providing significant performance benefits, especially for large BTF like vmlinux. Cc: Eduard Zingerman Cc: Alexei Starovoitov Cc: Andrii Nakryiko Cc: Alan Maguire Cc: Ihor Solodrai Cc: Xiaoqin Zhang Signed-off-by: Donglin Peng Acked-by: Eduard Zingerman Acked-by: Andrii Nakryiko --- tools/lib/bpf/btf.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 9a864de59597..918d9fa6ec36 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -659,29 +659,21 @@ static int determine_ptr_size(const struct btf *btf) "int long unsigned", }; const struct btf_type *t; - const char *name; - int i, j, n; + int i, id; =20 if (btf->base_btf && btf->base_btf->ptr_sz > 0) return btf->base_btf->ptr_sz; =20 - n =3D btf__type_cnt(btf); - for (i =3D 1; i < n; i++) { - t =3D btf__type_by_id(btf, i); - if (!btf_is_int(t)) + for (i =3D 0; i < ARRAY_SIZE(long_aliases); i++) { + id =3D btf__find_by_name_kind(btf, long_aliases[i], BTF_KIND_INT); + if (id < 0) continue; =20 + t =3D btf__type_by_id(btf, id); if (t->size !=3D 4 && t->size !=3D 8) continue; =20 - name =3D btf__name_by_offset(btf, t->name_off); - if (!name) - continue; - - for (j =3D 0; j < ARRAY_SIZE(long_aliases); j++) { - if (strcmp(name, long_aliases[j]) =3D=3D 0) - return t->size; - } + return t->size; } =20 return -1; --=20 2.34.1