Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0fe9984 authored by Sangwoo Park's avatar Sangwoo Park Committed by Linus Torvalds
Browse files

zram: reduce load operation in page_same_filled

In page_same_filled function, all elements in the page is compared with
next index value.  The current comparison routine compares the (i)th and
(i+1)th values of the page.

In this case, two load operaions occur for each comparison.  But if we
store first value of the page stores at 'val' variable and using it to
compare with others, the load opearation is reduced.  It reduce load
operation per page by up to 64times.

Link: http://lkml.kernel.org/r/1488428104-7257-1-git-send-email-sangwoo2.park@lge.com


Signed-off-by: default avatarSangwoo Park <sangwoo2.park@lge.com>
Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: default avatarMinchan Kim <minchan@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 302128dc
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -195,15 +195,17 @@ static bool page_same_filled(void *ptr, unsigned long *element)
{
	unsigned int pos;
	unsigned long *page;
	unsigned long val;

	page = (unsigned long *)ptr;
	val = page[0];

	for (pos = 0; pos < PAGE_SIZE / sizeof(*page) - 1; pos++) {
		if (page[pos] != page[pos + 1])
	for (pos = 1; pos < PAGE_SIZE / sizeof(*page); pos++) {
		if (val != page[pos])
			return false;
	}

	*element = page[pos];
	*element = val;

	return true;
}