Date: Thu, 30 Jun 2005 13:28:42 -0400 From: John Baldwin <jhb@FreeBSD.org> To: freebsd-hackers@freebsd.org Cc: Max Laier <max@love2party.net>, Andriy Tkachuk <andrit@ukr.net> Subject: Re: hot path optimizations in uma_zalloc() & uma_zfree() Message-ID: <200506301328.43333.jhb@FreeBSD.org> In-Reply-To: <003901c57d82$37891b80$de921bd9@ertpc> References: <000d01c57cf7$b9b6f9f0$29931bd9@ertpc> <200506301415.38106.max@love2party.net> <003901c57d82$37891b80$de921bd9@ertpc>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 30 June 2005 10:35 am, Andriy Tkachuk wrote: > 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? It just uses the stored value of the variable in %dx instead of loading it from memory at 0x8(%ebx). When I compiled a simple test program here locally I got identical object code though. > 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). > > > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200506301328.43333.jhb>