From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 75834 invoked by alias); 22 Oct 2015 15:03:19 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 75823 invoked by uid 89); 22 Oct 2015 15:03:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_40,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 22 Oct 2015 15:03:08 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id 94CDB8F287; Thu, 22 Oct 2015 15:03:07 +0000 (UTC) Received: from [10.3.229.73] (vpn-229-73.phx2.redhat.com [10.3.229.73]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t9MF36NO026881; Thu, 22 Oct 2015 11:03:07 -0400 Message-ID: <1445526186.3998.47.camel@surprise> Subject: Re: Benchmarks of v2 (was Re: [PATCH 0/5] RFC: Overhaul of diagnostics (v2)) From: David Malcolm To: Michael Matz Cc: Richard Biener , GCC Patches Date: Thu, 22 Oct 2015 15:05:00 -0000 In-Reply-To: References: <1442957171-22904-1-git-send-email-dmalcolm@redhat.com> <1443054335.30732.42.camel@surprise> <1444750379.17932.31.camel@surprise> <1445011002.6410.19.camel@surprise> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-10/txt/msg02284.txt.bz2 On Mon, 2015-10-19 at 16:51 +0200, Michael Matz wrote: > Hi, > > On Fri, 16 Oct 2015, David Malcolm wrote: > > > This fixes much of the bloat seen for influence.i when sending ranges > > through for every token. > > Yeah, I think that's on the right track. Thanks. > > This was with 8 bits allocated for packed ranges (which is probably > > excessive, but it makes debugging easier). > > Probably in the end it should be done similar to how column bits are dealt > with, start with a reasonably low number (5 bits?) and increase if > necessary and budget allows (budget being column+range < N bits && range < > 8 bits, or so; so that range can't consume all of the column bits). In my latest version, the range_bits is indeed a field of the ordinary map, defaulting to 5 bits. Right now it's either 5 or 0 bits for an ordinary map's range: 5 as the default, with 0 for the case where the map's column_bits value is also 0, which happens for large values of location_t (above LINE_MAP_MAX_LOCATION_WITH_COLS), or for maps where max_column_hint was very high. I put it into the ordinary_map (rather than the line_table) to handle those column_bits == 0 cases. I'm not sure I want to add any logic beyond that, for fear of over-complicating things. I have a messy patch kit with this idea, which bootstraps and passes regression testing on x86_64; I'm going to tidy it up and post it for review [the messy version is backed up here: https://dmalcolm.fedorapeople.org/gcc/2015-10-22/rich-locations/ It's on top of r228618.] Here are some benchmark numbers (the final column is for the patch kit above; control is r228618). Minimal wallclock time (s) over 10 iterations (each experiment's % change is relative to 10 iterations of control interleaved with that experiment) Control v2 v2+every+token v2+packed+ranges v2+packed+ranges+20151021 ------------------ --------- ----------------- ----------------- ------------------ --------------------------- kdecore.cc -g -O0 10.3065 10.268712 (-0.4%) 10.444528 (+1.9%) 10.398405 (+1.3%) 10.382135 (+1.3%) kdecore.cc -g -O1 27.0263 27.220654 (+0.7%) 27.622676 (+1.3%) 27.548755 (+1.9%) 27.725537 (+2.5%) kdecore.cc -g -O2 43.7917 44.02027 (+0.5%) 44.248477 (+0.8%) 43.843728 (-0.6%) 44.034842 (-0.6%) kdecore.cc -g -O3 47.4718 47.651101 (+0.4%) 48.005495 (+0.8%) 47.57282 (+0.1%) 48.149045 (+1.2%) kdecore.cc -g -Os 31.6787 31.802829 (+0.4%) 32.033478 (+0.9%) 31.699171 (-0.2%) 31.802537 (+0.2%) empty.c -g -O0 0.012662 0.011932 (-5.8%) 0.013143 (+2.0%) 0.013208 (+1.5%) 0.011506 (+2.0%) empty.c -g -O1 0.012685 0.012558 (-1.0%) 0.01279 (-2.8%) 0.012424 (+0.4%) 0.011212 (-1.2%) empty.c -g -O2 0.012694 0.012846 (+1.2%) 0.013175 (+2.0%) 0.013176 (+1.6%) 0.011495 (-0.0%) empty.c -g -O3 0.012654 0.012699 (+0.4%) 0.012792 (+1.6%) 0.013198 (+0.5%) 0.010793 (+1.3%) empty.c -g -Os 0.013057 0.012766 (-2.2%) 0.012885 (+1.5%) 0.01298 (-1.6%) 0.011169 (-0.2%) big-code.c -g -O0 3.29268 3.325748 (+1.0%) 3.303049 (+0.3%) 3.350572 (+1.7%) 3.352896 (+1.7%) big-code.c -g -O1 15.7018 15.765014 (+0.4%) 15.759254 (+0.3%) 15.45175 (-2.0%) 15.454777 (-1.9%) big-code.c -g -O2 22.5756 22.620187 (+0.2%) 22.605435 (+0.2%) 22.343609 (-1.2%) 22.2913 (-1.4%) big-code.c -g -O3 52.4236 52.590075 (+0.3%) 52.703835 (+0.5%) 51.9239 (-1.0%) 51.86898 (-1.1%) big-code.c -g -Os 21.154 21.253598 (+0.5%) 21.260138 (+0.5%) 20.907407 (-1.3%) 20.870625 (-1.3%) influence.i -g -O0 0.148229 0.149518 (+0.9%) 0.156262 (+5.1%) 0.150652 (+1.0%) 0.147663 (+1.4%) influence.i -g -O1 0.387397 0.38993 (+0.7%) 0.396655 (+2.3%) 0.3916 (+0.8%) 0.388918 (+1.0%) influence.i -g -O2 0.587514 0.589604 (+0.4%) 0.59651 (+1.4%) 0.585223 (-0.6%) 0.583341 (-0.4%) influence.i -g -O3 1.27356 1.280514 (+0.5%) 1.287596 (+1.0%) 1.273018 (-0.1%) 1.2723 (+0.0%) influence.i -g -Os 0.526045 0.527579 (+0.3%) 0.535635 (+1.7%) 0.528192 (+0.2%) 0.525308 (+0.3%) Maximal ggc memory (kb) Control v2 v2+every+token v2+packed+ranges v2+packed+ranges+20151021 ------------------ --------- --------------- ---------------- ------------------ --------------------------- kdecore.cc -g -O0 650337 654435 (+0.6%) 711775 (+9.4%) 659372 (+1.4%) 657465 (+1.1%) kdecore.cc -g -O1 931966 940144 (+0.9%) 989384 (+6.2%) 954779 (+2.4%) 952734 (+2.2%) kdecore.cc -g -O2 1125325 1133514 (+0.7%) 1182384 (+5.1%) 1136459 (+1.0%) 1134412 (+0.8%) kdecore.cc -g -O3 1221408 1229596 (+0.7%) 1278658 (+4.7%) 1232688 (+0.9%) 1230634 (+0.8%) kdecore.cc -g -Os 867140 871235 (+0.5%) 928700 (+7.1%) 884304 (+2.0%) 874049 (+0.8%) empty.c -g -O0 1189 1192 (+0.3%) 1193 (+0.3%) 1189 (+0.0%) 1189 (+0.0%) empty.c -g -O1 1189 1192 (+0.3%) 1193 (+0.3%) 1189 (+0.0%) 1189 (+0.0%) empty.c -g -O2 1189 1192 (+0.3%) 1193 (+0.3%) 1189 (+0.0%) 1189 (+0.0%) empty.c -g -O3 1189 1192 (+0.3%) 1193 (+0.3%) 1189 (+0.0%) 1189 (+0.0%) empty.c -g -Os 1189 1192 (+0.3%) 1193 (+0.3%) 1189 (+0.0%) 1189 (+0.0%) big-code.c -g -O0 166584 172731 (+3.7%) 172726 (+3.7%) 176062 (+5.7%) 176062 (+5.7%) big-code.c -g -O1 279793 285940 (+2.2%) 285935 (+2.2%) 281538 (+0.6%) 281538 (+0.6%) big-code.c -g -O2 400058 406194 (+1.5%) 406189 (+1.5%) 395632 (-1.1%) 395632 (-1.1%) big-code.c -g -O3 903648 909750 (+0.7%) 910001 (+0.7%) 902477 (-0.1%) 902477 (-0.1%) big-code.c -g -Os 357060 363010 (+1.7%) 363005 (+1.7%) 353338 (-1.0%) 353338 (-1.0%) influence.i -g -O0 9273 9719 (+4.8%) 13303 (+43.5%) 9758 (+5.2%) 9758 (+5.2%) influence.i -g -O1 12968 13414 (+3.4%) 16998 (+31.1%) 13562 (+4.6%) 13562 (+4.6%) influence.i -g -O2 16386 16768 (+2.3%) 20352 (+24.2%) 16737 (+2.1%) 16737 (+2.1%) influence.i -g -O3 35508 35763 (+0.7%) 39346 (+10.8%) 35783 (+0.8%) 35783 (+0.8%) influence.i -g -Os 14287 14669 (+2.7%) 18253 (+27.8%) 14769 (+3.4%) 14769 (+3.4%) [I'm looking to see if any further saving can be made for influence.i; I was expecting the gcc consumption to be less that that for "v2"]