From owner-freebsd-hackers@FreeBSD.ORG Thu Jun 30 17:43:20 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6120B16A41C for ; Thu, 30 Jun 2005 17:43:20 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from mv.twc.weather.com (mv.twc.weather.com [65.212.71.225]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1731443D58 for ; Thu, 30 Jun 2005 17:43:19 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from [10.50.41.231] (Not Verified[65.202.103.25]) by mv.twc.weather.com with NetIQ MailMarshal (v6, 0, 3, 8) id ; Thu, 30 Jun 2005 13:57:05 -0400 From: John Baldwin To: freebsd-hackers@freebsd.org Date: Thu, 30 Jun 2005 13:28:42 -0400 User-Agent: KMail/1.8 References: <000d01c57cf7$b9b6f9f0$29931bd9@ertpc> <200506301415.38106.max@love2party.net> <003901c57d82$37891b80$de921bd9@ertpc> In-Reply-To: <003901c57d82$37891b80$de921bd9@ertpc> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200506301328.43333.jhb@FreeBSD.org> Cc: Max Laier , Andriy Tkachuk Subject: Re: hot path optimizations in uma_zalloc() & uma_zfree() X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jun 2005 17:43:20 -0000 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" > To: > Cc: "ant" > 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 <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org