From nobody Sat Feb 7 10:02:28 2026 Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) (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 6B1D931A55B for ; Thu, 18 Dec 2025 11:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.196 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766057511; cv=none; b=BNP0QhCe/JJF3KIxvbsLcIzAQ9Aw0bcxUYU9ZwVTBHcJwCyOZOo2a88IHPKaIgXC2AN5KxusWlKXwNDv4nwY9YsTR+z4Ui4A6yUdG4hjIJf2U1gUZvDbqf6Iadc+t698kvyAs0ZLt0VzB1VjNgyWP3hmr2g3jyQTcpMoQGv/O5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766057511; c=relaxed/simple; bh=DwgNPmg1syV4ccxDgDErKTfXFZCSlTEFvUEnf2vv7ew=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TFPwALwgcDsCMgXm1vte4+4hIOTMaICIOP0I+Euk0Xtt9+CtjnGIPCAS22AUALp6X3oWQc3lRLjvCpkiEkCKz9zFG2qU3oYZCbd0hWUoGkn+0aQsSxabps9+uHYIOi1S9hWw8mY6x5AXAeRx1/bP5Kl5lsD2r8khiZp7HZqrNwQ= 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=aqmaXMaH; arc=none smtp.client-ip=209.85.215.196 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="aqmaXMaH" Received: by mail-pg1-f196.google.com with SMTP id 41be03b00d2f7-bbf2c3eccc9so696700a12.0 for ; Thu, 18 Dec 2025 03:31:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766057508; x=1766662308; 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=G5jDu9JTVmvSq4bzhcZPmH/8lJ37vJ5Z3Y7dPoVKyM4=; b=aqmaXMaHSswLZKLRsOVxIsf00iQ2z4CL6vjxYey3DL6BFsmTe+ivhb6+qJTWtzYIPg FttBzmG67QgtRnfD2aqSxWybdy3up1dyoeOmcJnWmPglG8jdMlo98SHbS/QAp3wlX2ZC uxs29Ka+ioZUUk8K6mVoDCSI2r6T9Ltjy5Y/KGaQPpuTKJ+oWcy1I7xCaKKRbsrfIMnY CgNtemW8DtZ+jGv0rLfgS6QfZ/lX/mBARlXfVd7GdQSTUoJa23JZWaBL8qihQmZKa8RD pt7zQ00apuAItOe3xCDCLXEOR2TqVoCmF1IhDcLI5PqP7ppibGQeVX7ZgeWFIYifha1q Bnpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766057508; x=1766662308; 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=G5jDu9JTVmvSq4bzhcZPmH/8lJ37vJ5Z3Y7dPoVKyM4=; b=AtWwRXy1IMGiou4qTYjpZM3pm1osRRfOzDCaG4xCJeD8O0BY0+g9t3PAOCp3UY7c/y SwZBHjTwPoPr4+FPC/WAt/gycWsvWD7A5xI1XExLSUn1Vn1m+oRNaEp3M3EcFji7e2fk jm7CWCjWfCwALm+WETdNtHRP0qk4iPAYEYnk1gUgM1z+7acJmW5DHEBgX0wdMHGFbKUT lTLg+fGMpqyFrtVt4TL4U9EXoPPhlBGLHSdhjyAqwvuIuQw+1CmFx7/CpLz67dJt3rZd QBsfoaEhyZg02+Bss04BlEF24k52MeKDKRazrK0hgcaEBuXFBsXc63wqcuhMMnCCMkLL /y3Q== X-Forwarded-Encrypted: i=1; AJvYcCVGI1V7AS296w55DRrd84A2oJ/Sjoxvxa7qTk7YrSMXC3QRuywnYVdXIPW7hxVFm6c+vy0L09lRqbhQhrE=@vger.kernel.org X-Gm-Message-State: AOJu0YyoJKKbUw9ewokcMQ/HzloT0E1zSsVwpTR4Oc02cN73fvrZsaZQ hP5lX3QZcPDxVwUZ2iVpPbi34OcDWeeyMhiKkhXj/o46/w6NvquLI0xw X-Gm-Gg: AY/fxX71YGo4dxq38R4sL0p1KZpjQN3PUUwFpEdthHbSJ46YKA6mUxhzLx9vgnNjKko ShMxhjfPIIbUMkfbwfPj0sKoh29hethCE0PUBlmnOAMTW6obFxIecZ32JB3+Z/4KFZziTcX8jYu dY8fqEUICyd5W0ugpG7X7BQLhoPi97o2eeBJoGf58pW2Ft0JDSMTv33M9kk4YF9BDxSMn7mcJL+ gO1ZoCX74zSBItKA0UBIitx5S8Jm/El8FKfuzcU9BoktjkUaCgx85m0/vciWVqbNwV783P2hj9n Qq6LU6qXpdgU16JK6Wv6HT0Fc4iQApRvE9Z1H/VloBW2TxvPyaH7hF/z6qgRfyi08JuIL/5PSTo qeI548y8+IKJMPKnDpNC7fSqn1Lo4N7P/meDhsxnWrZtFAz8JmCualUN+UuoItR6VX285NSGe60 0GQ/H1LLHZl5XdJLNJsGi2Xb2myVU= X-Google-Smtp-Source: AGHT+IGih1pBcpxyYWbt8JB2iczqZCbsKJU3zx0Wg3zNFIeEbu8D+9YIAJPSqoKisqtyqihlEVUPVg== X-Received: by 2002:a17:90b:2251:b0:343:6a63:85d5 with SMTP id 98e67ed59e1d1-34e71e0f8dbmr2312918a91.16.1766057508457; Thu, 18 Dec 2025 03:31:48 -0800 (PST) Received: from pengdl-pc.mioffice.cn ([43.224.245.249]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34e70d4f887sm2328237a91.3.2025.12.18.03.31.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Dec 2025 03:31:46 -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, pengdonglin , Alan Maguire Subject: [PATCH bpf-next v10 10/13] libbpf: Optimize the performance of determine_ptr_size Date: Thu, 18 Dec 2025 19:30:48 +0800 Message-Id: <20251218113051.455293-11-dolinux.peng@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251218113051.455293-1-dolinux.peng@gmail.com> References: <20251218113051.455293-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: pengdonglin 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: pengdonglin Acked-by: Andrii Nakryiko Acked-by: Eduard Zingerman --- 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 c63d46b7d74b..b5b0898d033d 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