From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail-a.sr.ht; dkim=pass header.d=maniero.me header.i=@maniero.me Received: from toucan.tulip.relay.mailchannels.net (toucan.tulip.relay.mailchannels.net [23.83.218.254]) by mail-a.sr.ht (Postfix) with ESMTPS id 123D82014E for <~johnnyrichard/olang-devel@lists.sr.ht>; Wed, 21 Feb 2024 05:52:49 +0000 (UTC) X-Sender-Id: hostingeremail|x-authuser|carlos@maniero.me Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 4BD50C216E for <~johnnyrichard/olang-devel@lists.sr.ht>; Wed, 21 Feb 2024 05:52:48 +0000 (UTC) Received: from fr-int-smtpout5.hostinger.io (unknown [127.0.0.6]) (Authenticated sender: hostingeremail) by relay.mailchannels.net (Postfix) with ESMTPA id 533B9C184A for <~johnnyrichard/olang-devel@lists.sr.ht>; Wed, 21 Feb 2024 05:52:47 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1708494767; a=rsa-sha256; cv=none; b=bJ+gSS7qqpZ4642fyi0k7QkgdSaLofoyT996gMNBLWYeH1ln502EGRk19YX/mIC7x/ocLr tR1UZNDQJp6TUcjWq0Ji9aYrgeV4Q4bntkL9WjU3jS0mJC84cBNtUrG/q0dzfJwt7tYtf/ cJaImQ3FuFqjR1nfy0mvgYOI70dFnigFSqcMXmAk3iicBjpQMYZDAtUwob7aC4HJ/hSoDt CaHEOPQH/GCvTC+3q3K6LXji1cOEKIwP+OSYaOvf3uxnR3a+g79dI/f0Cx1cuO0ZM5iTNj CMJ4nCiONsw+L515ad7MYWkZNYSO+SVKAC9DqQVifFeHH23n/1mkBggx2xNHNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1708494767; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=yaAn2hr9Byb5truNbau7yFkCN7KeRl6WkLfH1Xz5LbI=; b=SDRweHutPEzdIkkYxtMFh8mihJmXA7xzuSK1kWZ9Hs1Q3fnVlglTQo0RWiuByOlkNH+RZm x7sHsRsFxDsGIDeRKGCuMDmWxBtdrwEVtBnXasZomAXRStu35aXv60LKoO0IUMcv5LWhYn 82Ah+dsQDdHxqvNQjlYtJYkuvJemR2lTW+eQdUjZKsVTm+bepiuHm6RNDwAalCEHwCg+tA HzGm9blcEUfVJsGzi4hgBDXiAm6ECeGILCkJ6AE2VtNYdwW4GqROyUBloyprkhimHAqEkG f5IbQbJO1mYpeLuYryhyzMjlSzdz84odxq95Ay5UtopKHDYjiqyfBBqEZeQRtA== ARC-Authentication-Results: i=1; rspamd-6bdc45795d-xsq8r; auth=pass smtp.auth=hostingeremail smtp.mailfrom=carlos@maniero.me X-Sender-Id: hostingeremail|x-authuser|carlos@maniero.me X-MC-Relay: Neutral X-MailChannels-SenderId: hostingeremail|x-authuser|carlos@maniero.me X-MailChannels-Auth-Id: hostingeremail X-Reign-Relation: 7f39430233159fcc_1708494767940_3084580315 X-MC-Loop-Signature: 1708494767940:4002591153 X-MC-Ingress-Time: 1708494767940 Received: from fr-int-smtpout5.hostinger.io ([UNAVAILABLE]. [89.116.146.168]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.127.149.162 (trex/6.9.2); Wed, 21 Feb 2024 05:52:47 +0000 From: Carlos Maniero DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maniero.me; s=hostingermail1; t=1708494765; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=yaAn2hr9Byb5truNbau7yFkCN7KeRl6WkLfH1Xz5LbI=; b=Se51IZIYgMJWWmjMD0Rs2Rfy4ayUFh7hZDbU2Zk2+RgcNam1qebnikLRvsIJh6Q4EQVuQX 1/aG51wPRZdIBvRhVSDEyw/qCPHJ68dSx72yc5T/6kKuBU/k4PjMs1WPnr3l22GA7UmOM5 /uraYSvrF9Xf+F7x83r9EUGKocvxmWGmfdiRl2cV8QLSF++yjQb9TbK4ehK661SVQm4Qmv ZmgzwrxaX8ikPYe4kcslcPrjL6H9QSgCE7L1R0sj7NH76cC1NEvzW9rEk41GTy0oEPJPEy KlUijgcfOaRvplKmkN57o2UCQX2/fVPs0/mUrj3ra80A2hZx36TTcuu8uXXvWw== To: ~johnnyrichard/olang-devel@lists.sr.ht Cc: Carlos Maniero Subject: [PATCH olang] arena: optimization: make arena 8 bits aligned Date: Wed, 21 Feb 2024 02:52:37 -0300 Message-Id: <20240221055237.3231555-1-carlos@maniero.me> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-Analysis: v=2.4 cv=FdIxxo+6 c=1 sm=1 tr=0 ts=65d58fad a=5+VMC1FZ3J4mVPAKpPmAqg==:117 a=5+VMC1FZ3J4mVPAKpPmAqg==:17 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=BXDaF_L80NYA:10 a=VVMjc32anWE8iUsNp0sA:9 X-CM-Envelope: MS4xfE5tyDQeD10pfFgIAUUk5EiV/OhvsUYXNgVg3qPdmNv8xIkfujaMk+OytmqFJr2Fflly3wNnRezpW11f5aQC56r3LpFDJMx1CQdCXmiLDD5DcSW7Qf1r F/MycDxyIl9WNw994hMiZRIQ6yf481Nzln9VdW8xay209sVQvoxBT8rLIK6p4n2ajZy9D0t6zKENoHvSKNDNfiZCEX0ilxSbtvbPReCHPEVannVXZIytOfCp X-AuthUser: carlos@maniero.me X-TUID: LVQaJ0i4j0fy Non aligned data structure could have a huge impact on performance. Take the example bellow: int main() { void *pointer = malloc(1024); int* data = pointer + 1; for (int i = 0; i < INT_MAX; i++) { *data += i; } printf("result = %d", *data); } This are the execution results in my machine: pointer + 0 time 0m1.668s pointer + 1 time 0m2.285s pointer + 2 time 0m2.286s pointer + 4 time 0m1.722s pointer + 8 time 0m1.707s This commit changes the pointers to always return a 8 bit aligned pointer. Signed-off-by: Carlos Maniero --- src/arena.c | 2 +- tests/unit/arena_test.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arena.c b/src/arena.c index ae33e6a..63662e3 100644 --- a/src/arena.c +++ b/src/arena.c @@ -35,7 +35,7 @@ arena_alloc(arena_t *arena, size_t size) return NULL; } void *pointer = arena->region + arena->offset; - arena->offset += size; + arena->offset += size + (size % 8); return pointer; } diff --git a/tests/unit/arena_test.c b/tests/unit/arena_test.c index 6310795..7808b64 100644 --- a/tests/unit/arena_test.c +++ b/tests/unit/arena_test.c @@ -21,7 +21,7 @@ static MunitResult arena_test(const MunitParameter params[], void *user_data_or_fixture) { - arena_t arena = arena_new(sizeof(int) * 2); + arena_t arena = arena_new(16); int *a = arena_alloc(&arena, sizeof(int)); *a = 1; -- 2.34.1