Thread (61 messages) flat view 61 messages, 5 authors, 2016-06-15

Re: [PATCH 02/19] untracked cache: record .gitignore information and dir hierarchy

From: Torsten Bögershausen <hidden>
Date: 2016-06-15 23:02:48

On 2014-10-27 13.10, Nguyễn Thái Ngọc Duy wrote:
 dir.c | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
 dir.h |  60 +++++++++++++++++++++++++++
 2 files changed, 189 insertions(+), 21 deletions(-)
[]
+struct untracked_cache_dir {
+	struct untracked_cache_dir **dirs;
+	char **untracked;
+	/* null SHA-1 means this directory does not have .gitignore */
+	unsigned char exclude_sha1[20];
+	struct stat_data stat_data;
+	unsigned int check_only : 1;
+	unsigned int untracked_nr : 29;
+	unsigned int untracked_alloc, dirs_nr, dirs_alloc;
+	char name[1];
+};
Are we utilizing the CPU and the L2 cache in a good way ?
I would consider to re-arrange, according to the following rule:
- 64 bit ints first (we do not have any)
- pointers (may be 64 or 32 bits)
- structs
- ints
- chars

And then we have the question why untracked_nr gets 29 bits,
and check_only one bit, which means we have 2 bits spare ?

From what I know from CPUs and compilers it could be slighty better to give
32 bits to untracked_nr and either 1 bit to check_only,
or simply make check_only a char.
Or do I miss something ?
+	struct untracked_cache_dir **dirs;
+	char **untracked;
+	/* null SHA-1 means this directory does not have .gitignore */
+	struct stat_data stat_data;
+	unsigned char exclude_sha1[20];
+	unsigned int check_only : 1;
+	unsigned int untracked_nr : 29;
+	unsigned int untracked_alloc, dirs_nr, dirs_alloc;
+	char name[1];
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help