# [PATCH] commit.h: rearrange 'index' to shrink struct commit

2 messages from 2018-05-11 to 2018-05-13. Participants: Nguyễn Thái Ngọc Duy, Junio C Hamano.
Thread: https://gitlist.dev/t/48466

## Nguyễn Thái Ngọc Duy, 2018-05-11 17:20

Subject: [PATCH] commit.h: rearrange 'index' to shrink struct commit
Message-ID: <20180511172054.7684-1-pclouds@gmail.com>
URL: https://gitlist.dev/e/20180511172054.7684-1-pclouds%40gmail.com

```
On linux 64-bit architecture, pahole finds that there's a 4 bytes
padding after 'index'. Moving it to the end reduces this struct's size
from 72 to 64 bytes (because of another 4 bytes padding after
graph_pos). On linux 32-bit, the struct size remains 52 bytes like
before.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 commit.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/commit.h b/commit.h
index e57ae4b583..fd1cbe7263 100644
--- a/commit.h
+++ b/commit.h
@@ -19,11 +19,11 @@ struct commit_list {
 struct commit {
 	struct object object;
 	void *util;
-	unsigned int index;
 	timestamp_t date;
 	struct commit_list *parents;
 	struct tree *tree;
 	uint32_t graph_pos;
+	unsigned int index;
 };
 
 extern int save_commit_buffer;
-- 
2.17.0.705.g3525833791


```

## Junio C Hamano, 2018-05-13 02:03

Subject: Re: [PATCH] commit.h: rearrange 'index' to shrink struct commit
Message-ID: <xmqqmux4e2gq.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqqmux4e2gq.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <20180511172054.7684-1-pclouds@gmail.com>

```
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:

> On linux 64-bit architecture, pahole finds that there's a 4 bytes
> padding after 'index'. Moving it to the end reduces this struct's size
> from 72 to 64 bytes (because of another 4 bytes padding after
> graph_pos). On linux 32-bit, the struct size remains 52 bytes like
> before.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  commit.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/commit.h b/commit.h
> index e57ae4b583..fd1cbe7263 100644
> --- a/commit.h
> +++ b/commit.h
> @@ -19,11 +19,11 @@ struct commit_list {
>  struct commit {
>  	struct object object;
>  	void *util;
> -	unsigned int index;
>  	timestamp_t date;
>  	struct commit_list *parents;
>  	struct tree *tree;
>  	uint32_t graph_pos;
> +	unsigned int index;
>  };
>  
>  extern int save_commit_buffer;

Quite nice.

```
