Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jun 2005 17:35:17 +0300
From:      "Andriy Tkachuk" <andrit@ukr.net>
To:        "Max Laier" <max@love2party.net>, <freebsd-hackers@freebsd.org>
Subject:   Re: hot path optimizations in uma_zalloc() & uma_zfree()
Message-ID:  <003901c57d82$37891b80$de921bd9@ertpc>
References:  <000d01c57cf7$b9b6f9f0$29931bd9@ertpc> <200506301415.38106.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
I just checked the object code - you right, it almost the same:

-   bucket->ub_bucket[bucket->ub_cnt] = item;
-    22b9: 0f bf 43 08           movswl 0x8(%ebx),%eax
-    22bd: 8b 4d 0c              mov    0xc(%ebp),%ecx
-    22c0: 89 4c 83 0c           mov    %ecx,0xc(%ebx,%eax,4)
-   bucket->ub_cnt++;
-    22c4: 8d 42 01              lea    0x1(%edx),%eax
-    22c7: 66 89 43 08           mov    %ax,0x8(%ebx)
+   bucket->ub_bucket[bucket->ub_cnt++] = item;
+    22b9: 0f bf c2              movswl %dx,%eax
+    22bc: 8b 4d 0c              mov    0xc(%ebp),%ecx
+    22bf: 89 4c 83 0c           mov    %ecx,0xc(%ebx,%eax,4)
+    22c3: 8d 42 01              lea    0x1(%edx),%eax
+    22c6: 66 89 43 08           mov    %ax,0x8(%ebx)

but still there is some minor difference in first line.
I'm not familiar with assembler, can somebody explain
whether this difference is assential or not?


in decrementation there is no difference at all:

-                       bucket->ub_cnt--;
+                       item = bucket->ub_bucket[--bucket->ub_cnt];
     1bbe:      66 ff 49 08             decw   0x8(%ecx)
-                       item = bucket->ub_bucket[bucket->ub_cnt];
     1bc2:      0f bf 41 08             movswl 0x8(%ecx),%eax
     1bc6:      8b 44 81 0c             mov    0xc(%ecx,%eax,4),%eax
     1bca:      89 45 f0                mov    %eax,0xfffffff0(%ebp)


----- Original Message ----- 
From: "Max Laier" <max@love2party.net>
To: <freebsd-hackers@freebsd.org>
Cc: "ant" <andrit@ukr.net>
Sent: Thursday, June 30, 2005 3:15 PM
Subject: Re: hot path optimizations in uma_zalloc() & uma_zfree()

> Another optimization is very trivial, for example:
> -   bucket->ub_cnt--;
> -   item = bucket->ub_bucket[bucket->ub_cnt];
> +   item = bucket->ub_bucket[--bucket->ub_cnt];
> (see the patch)

Might be me, but this doesn't change the generated object code at all (modulo 
the changed __line__ in debugging).






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?003901c57d82$37891b80$de921bd9>