From patchwork Thu Jul 6 08:51:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashwin Sekhar T K X-Patchwork-Id: 21450 Received: (qmail 89281 invoked by alias); 6 Jul 2017 08:52:08 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 89143 invoked by uid 89); 6 Jul 2017 08:52:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=timing X-HELO: NAM03-BY2-obe.outbound.protection.outlook.com Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=caviumnetworks.com; From: Ashwin Sekhar T K To: libc-alpha@sourceware.org Cc: Ashwin Sekhar T K Subject: [PATCH 1/1] benchtest: Run benchmark only once for each input Date: Thu, 6 Jul 2017 01:51:52 -0700 Message-Id: <20170706085152.36466-2-ashwin.sekhar@caviumnetworks.com> In-Reply-To: <20170706085152.36466-1-ashwin.sekhar@caviumnetworks.com> References: <20170706085152.36466-1-ashwin.sekhar@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: DM5PR2001CA0018.namprd20.prod.outlook.com (10.172.43.28) To MWHPR07MB3070.namprd07.prod.outlook.com (10.172.97.12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0de59c75-a24a-4637-8e35-08d4c44c45f5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:MWHPR07MB3070; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 3:oysqm9sUrNAOZKSVS7H8KVF7/4nOnJ9cl2FplKtIqp9Rm62NnUwvY693PZeGbFH4ytbmUk60XHmJ8EL1DYblWj1svVP0uM9Mr2lpr5eMHterqbmhSl94Nap8PAJPzhIaTJ6adRce5S16h5+0SnXHTj9Sw32TF3zy/zJiKdAUr+7gzWpNVqtBFZISP08la8ieQFyVk4gQ9kTwKhRV4oeaV91W6H8BZYiWu8vs4S9z26ttg20Djo95641np0ooEf6jW474WiTLYNAktnQ3FadIKoQ09oyB/f5DGvUcAYLTtr6mbEgc56JvfoL+RdBLsiqb28slybujodCQ3E4wYA2nsXh8dFdWrVzOtLTNlYQU221I1J94BKCnstluk0XErqnlb8BcDxpQTT5eQKe5btg19Pok0GYvaqCd4R2pk2rfHHVn7oVT4yUZf5ULD8dgNOyHgVvoXNNqMsss1s1bKpVFARuO9wycpUEqHpgK7+0yvCTFH9Mh3B72bWPrKE830OHeJrMzAUp1AIlYji6F0LfTVgTN09dMl4eLEXYT3O5OlAkVtht0HfjsWFdTwF8EqJjSMpiP37ABxPNLQCjZIbYwqqbfvHt8rEec+97miiefWsRvGj95JvRNR388sqCggqXvvI7Vq1EpXJhYbbsb47u+vmNaucI7ZazDYPD8K8mw2oEzpjP1RJlTcD26Oizg8SM7vBf9Ldrf69tWabC7Na9Evj8BS12WSJQFVQxR5Zgpe3gOxnlc1nYSS5md5FAyR3D8 X-MS-TrafficTypeDiagnostic: MWHPR07MB3070: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 25:m0pSIYhc/xJf8iu2OCOgrTQdFpKsMkRcRoNd++RoUAXgX5PNgoORQVfqs6oedJ8mrU4PtaMSBjBVy9UmBNHFq0njlYS882rKq/hcl/id60TLbkQoLRBmV7UsNcUMPvMNywisNah7Lfk/R+ifiRCthSqjT+5ROVJRT5LySIZzaV7+H4cifmVLJPNjD5nflTl8AQJLCVtm/eY3gv3SVf4q1gnhiH3erephztbFHC5QPzrVpVgaM40YfTxp5Oz4SuIu38+63RghJB5zt8NP7kCEFxJhNUqx9FwA8cmsmFyiBh7QxhFeZi+l5s5CEhtqsoTD9tEcSWJmP16rlWphZ16IJRmFG01RjCRtEnjFAnbJkV/xPcJNMLAEuW/HfQf+lmEEgEYAPI7LoHfbgpXDFtJAoowTFOn4OJKTHKEH8SRgT646l5eIOhg9+LntfLC3e7IM1LzBcDc34f9OS1jUfh8QehkmT9otES0wxrjdWLCIvpG4wrZ7Sb1dI40sGBSLf1Dpr0Sp9TM7j03skrpBL+IPItzpEeKx4ver6JC7COt87I4/iwc0Rv1Q6uMnoW5Zf396ebjvbC+FuM6Yi0wFyauyqoFM17jemNvO8Hn73uX2aGVl8L5OHEyoPhleEryfIG46nr4Ans72reX5byA3/rqcs7LZiSwg47Yu0Uvt86fBCVTN5JDcE3uUcsL+pj7c1GI1Z8Uw64tjMeVXMOKjaxx6R2X5dI+GH/1W3HhU9alXYduqDARxi9PmRTf3/kHeAfJayRAThm7IxP+2Hbgj9s9qrTy4HR7lQZCMOOwcMzz/loEOhEtWALm8JcyFPMBhjdO1wJj92wRpHz4d399T+24DAFEmbzoxkNiWq2wXS8ZqJ7rqrCqfPExqDmt9ppQoow2hc7onq5Qf04spBEZ/5nmfUL0R5l2o0rBADSb6CU64DjY= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 31:nEHoKIdmZtndjk9lBFarAYu/HGjB2+bRC1O3YGXGCRw1EzSq4mK3wfqVrm+oQDmDMT383+OkISJegsDHlodDeX++5KqbaPv5HA6KrsYEnoCPhCG2jhXkTVYw5jY/awRsswBf/+26vUcp/j4GEfbewnVnLQmRsUdo5qMctEBlYWaSfzAa8LE/I3xhu/ByM/5d7/e4TbU29AiyOsyYD1bgOPlKXMZWWFcF6N+r0MGCLP/8djuBcYTXVlqWhWzzJkXfGPLZchTIF3B0o1EEIFLUdhTPGR+y3/wJFJMPFV4+4yBqQ7lH/79+mFXR/Kf2J1lcy7yLjXKAByq6KPB5h+PLyADvhgC0dqWKZzp2vqXXRVik5c74/FnG+g1ipJNb2/dQn+/H3ZtNLq0D+X8BY6U+of532QZ5Kq5ANh31P/UOXScdOL8FlLZmyFgeh/qr+VdfOg9GLe3RimyCx6oMd4asibzqQjUy5Yg2euohP8nmPHi5cnTeOo95DhN7N4aT7ioJY7wmUYkqKgKfg4YvjNFcBYG23Kx8VN504iFjZqGfIL9McDZ6g+rKcjKb3G/SC8pkqJYnIo6I28lANAgEAdd9MxeMCq78u0cPS+v9iU6NBRDiu63OLJl/oMLPp8zXXdKlJL2MdfgDRY3xTaM+VLFeJR9h3GP3+JwLdRXOtQVpQ2M= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 20:QSlXYwfD4cdiiqAnDMuTFxEwARmIKWRNMOT2W0/Os9zQKjxvUanH6fFV4V2UjbJNsgTLQXYRe3IbiQHad3hJcltHFHKNfipbGlCVBEzqrqpy1B6Z84sFTn2Orl2X+lb/iFKSHIKIZHIwxSz9a8gu+rT8uGVYYVDW1zqTag/cyL1yBx1RQiTLlda5hN74z5eWoOP7WjvEJ9OL/7zsRn1HXtMZiFVMiHzdS85KAqgcQHekfHRt7Nktzarrvcr+6o+yWaZChw+29FotqWc/e0RAU+gXXhamY6PWl5J9/7CorEOS2cFmkPucp5xU4cbw8O0wZoiQsmKpYqPdySnqPArVBHjch94RKajwEWQ3LV452HhRxJDRMEwDQfAvXM8jonzOgSQ05wGCzFOBiYRInepxZyqyznPeM8AfsypfdcLyE5Gzm09ED83xv4zTnJs5DYAOdyBnK5sOeb0AHUAQxLqZLcbBieBBZKoNslxMEeNSrW2h3C9+IIy5cFdGmtRhaE9huZafXtUavClfU5SDU+a6XgR9DEjiBj0Sxkw4kPe8ij4/Zk8AB5yJEF6FhrSgAErvENhvJtnnlYoV4caS5wE8hJ+pcdt0RX5sP38ese4SlQQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3070; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3070; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB3070; 4:+HyBG8HSbBH8J+pbh494LKBcDV83ObDaMgoYtPx8wC?= =?us-ascii?Q?fFdB1h9zLNtVZk8Cx8i5jz6/HhLuGMwyfpM/77qzMm4v1THD5L8w9rK6f/xg?= =?us-ascii?Q?3HxivAAc6pleKeRyqUDBbEQX7ZATvFETvGNYQZAtcp1qJouwMS8BfvD8b4Gd?= =?us-ascii?Q?AVHQh4nC2flP3RX0CftRNKQv49rljK83cNrkaYi9rlmSLSZq5ZK9lDzdVAwK?= =?us-ascii?Q?iOz6h0TxU9ZZeWANgaVPkgXpOT0KRY94RFTLdsOWie0LWtmVbxjsyYEFcHMh?= =?us-ascii?Q?a2paG0UV3vRpuHjD0wBOivvy72UJjj3XGRFRygHE9FcCmFo1Znic7YYOC1UQ?= =?us-ascii?Q?yP32nnXUn230tecBVJezt3k8BD2CJbhrH9oggS4j8Xu9iRijn0t0bC5myCfq?= =?us-ascii?Q?qdArBa+zeIUDyvwCWV8VgFIY2XeCciDCTKp5DKQQ5k8LnddmUmunhjaqJS4L?= =?us-ascii?Q?/cBQlzkfr/JAsp5+wcnbnVRk1Szz0THHGjbtc8WTUGoUlkJUri/RHkWMFS64?= =?us-ascii?Q?pVo3D3f2nzuq3lHT340W3R1MoS9pyLpCeix1zlgp4KauyIKhEIWM1raJOF0h?= =?us-ascii?Q?QaisWyM6/G3UQ/Bc69MMS/P1wPQJ08BjLCUkDdeuvJ/gazhI50xQvDArCXBW?= =?us-ascii?Q?Zc30MHm9+RPi40JtugQoo97zpoBp1j+DzkllWcA/+4lrSUThael0kNmC1mw0?= =?us-ascii?Q?UyVDbdYBNsxDVKoVhuvqWBG5omiDxBiimxRxkbcvEcEklM/GypKRtLA+/92L?= =?us-ascii?Q?aP1ijomwvWBuSVzNfLRrNxfKgWAnoNNuB6tZf3E1q75IvvI6sr1sZF1hZnl6?= =?us-ascii?Q?qhs7uLDQf8zI8VaREv6AbMTXXBlFE+aQYFaL5U4qCMJ00jo0w9Nrmc+pyDII?= =?us-ascii?Q?C+Z2HLE5zWpQhXORodi3sNBVgTiNNkGqpz7F90mxoREugoOzQbTwl45wCQrn?= =?us-ascii?Q?RcxHWrvS+1HnHTtIzB0Eu8XERuw5DHHpeG8XGQAdHz5kstK3Ur/35+EyE1g1?= =?us-ascii?Q?y9W45Mw0o1lQnhCAblOfi8+evPA/Ack/0UygxNnaLtiq5iO5t1QNj+RBGDNn?= =?us-ascii?Q?HZ9Vy7yMJ7jYaInsqfnTjILzHgHIvAdOo9hWkFqE2kBM3HDoLSjHSqoEdUyC?= =?us-ascii?Q?vjcWBvhxhPERZnZFBEyHR64VsiD46ZSazAFSX2oDD9SPiaHCp4k7ybPCnhk6?= =?us-ascii?Q?vy9UobOttif4mppQJX4mSVe52+iPUZ4Hxk?= X-Forefront-PRVS: 03607C04F0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39840400002)(39450400003)(39410400002)(39400400002)(39850400002)(76176999)(110136004)(6116002)(2361001)(33646002)(478600001)(5003940100001)(3846002)(6506006)(6486002)(1076002)(7736002)(66066001)(2351001)(72206003)(8676002)(107886003)(50986999)(6666003)(38730400002)(47776003)(305945005)(81166006)(5660300001)(48376002)(6916009)(6512007)(4326008)(42882006)(2906002)(53936002)(53416004)(36756003)(25786009)(189998001)(42186005)(50226002)(50466002)(2950100002); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3070; H:1scrb-1.caveonetworks.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB3070; 23:roHqxcLHKQD+H5W1kgrWxz3bge8axs/XTLwviB21e?= =?us-ascii?Q?izWr8SAwX2yum3dHZthu8NCHRCgOgbV1fA7nytvYUuR5R1r7wmdSj1Ywpoa8?= =?us-ascii?Q?r93oPKlbXUEScKUnIiUsAIBcNJkSb5XygStaB+m3RgV8sy7kIWP09TTFzpQL?= =?us-ascii?Q?Wp141ZrAEDwJvLMuCqz3wOTJji6SqctThEYG2uVBN7/2EJoPTrAnlrbh8GjK?= =?us-ascii?Q?MIL5vPNx4ZnFPJS6m7D5hIt9LBpFTdZ9qfJCXX1FEjluoZhQZ9G75MOkBQ4k?= =?us-ascii?Q?QX0C+3myM+90nksZMaieWaO8uRZEk1Ss0qnhfFw+TnL2m1d7tCvhipWk+520?= =?us-ascii?Q?WGFN7M1lW84i/pbbG6DZ2JM4CQcMEqM+aBADitc74//23GkCxUnbsad2QiRV?= =?us-ascii?Q?mPuchK0X1+BKHnZfdwMq8g6l8f51O2kOLLD6xvYJQpCmlGIHKmSmGn4JLXWF?= =?us-ascii?Q?Z4Kp/Cpw41XlUUgjSAG6ycaujdfPYYkj9Ng2bMFbE9a4/J/SSan71dB/NCsS?= =?us-ascii?Q?Xgm2O8kk6B2Wos8+RMZq2dYxWM/ru2ptwVd9ClZx9yixBkm0AxZi4cPzOXqr?= =?us-ascii?Q?u32GY2ti2uOeZ7b2ONk4AwctxgWhHv8Z+lJ0wD67pfnuTWy4M0nJsGa10ByX?= =?us-ascii?Q?lJfm8zGtB/HqRrktwcD3VqKaKgQZaJL2KKR58dmL4MohpK/AC8mQ5JnOAsVK?= =?us-ascii?Q?Pfx3hysJvkI7YL4hIet497/w4LFsfwXoHN8VC7DckqV0so3Mym2Y0peBY9/F?= =?us-ascii?Q?GNhYfmJHOTdu8hItUqU7Y7iRUeJIMaOT1JsBEHslN+G9L+DlAdwwXTu4G2sf?= =?us-ascii?Q?0ztXeW+Jez3RpjSpkib0JOfoyRwpxda4lZEAmr377LwwV5EuUxTxGgKPrS1g?= =?us-ascii?Q?ezZXszq49iHVeTuaSsOD7rwt+1VQDx/FBF+r7wOs5yM6vRX29U+VunuR0NY3?= =?us-ascii?Q?Eeh7W8JsRYumIwOwrrGflXJViI97POLaecOkmnSBzvfR+ygTfSoAZRq6l20L?= =?us-ascii?Q?KsJdIJQeNAu3OTPqbhWJOWnZz6NVbCz/lOOQ+/q5OteMkQZhF/bEXpkIACzN?= =?us-ascii?Q?s9rZ4nX4+ald61er/tXN/7WB6lMctPncnY1F7Jjsoi4LZqIewxELp3CTIzI4?= =?us-ascii?Q?vkNFR4rSIK9wsP/LiC7i2f5o8VB00fh?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB3070; 6:sXxoqRlxvzs22Oa1iuPveK46eOky692tc9MF6kXkPt?= =?us-ascii?Q?zJK0VXqV6piJWP/qbtjwjMNcvn2TZtMTwWvTlgwPXp0uq3qwCto9mLsosh+K?= =?us-ascii?Q?JgBHXOywr4oM4rCo+0GcK77EH1j7acSlEBuqaiT4jUjdtyVRH3SXfcESlKHL?= =?us-ascii?Q?/6CJmLGDyvty1b4HzBSldirWrybFxWF/8bJxqSRD0xxTRemPySzkbS5nSWXb?= =?us-ascii?Q?hWwl0NwrF755OW5X+04fsVjyR11J0P7wDAWeje4SZ9rIssGgg2/xCjcHTKYN?= =?us-ascii?Q?Aq/hZQQu+oJUoB9bUERuQ9HSEU24QMuHGtSXGf+E477cHhdCigATmvBn0+IC?= =?us-ascii?Q?iWaP++Xd3ulYx/QKlYZ2C0+uGoIIrq2Jn9T26rk/7sOIPtSDMMvFdAi4sdaG?= =?us-ascii?Q?sDonodJtzg8FwfJJpPvdGWcPRpPfId/Y/DOG+69b0LpAoV6LaOr+KL3m7y7e?= =?us-ascii?Q?5yqHT8bhKjwo1RoCtJjFq4TVxgFSdaawTrA5lTAtY8GFmWFK2rteNfxj8+9w?= =?us-ascii?Q?M2rI++IM8xPv39KEUUDEa2O3uMrsX2hNMA5L9ViVIpvPjvXtk6cM7AQck857?= =?us-ascii?Q?JqwMxrLZqVmj6aezwZIT9rlPPsO/2RYX/bo3ukpCujJunnhkOXzmWFX0ccq4?= =?us-ascii?Q?0qXXqodSy8zvHSYGVvbpt2bj3LWpHL4Erd5AbtL7qeb3BycelwCnBTeAHtGL?= =?us-ascii?Q?okqIC12v2Nv7NLDpK+QpfhV3wT/ZBB7HTZp6jxVdcBsijlaAF+CRP5ZQ73WE?= =?us-ascii?Q?RnGl0gmJcrwnpIGsVf8bMHueJcaHGz7oQ69YMgPqZk7HIW/nt04+uLuaMMwz?= =?us-ascii?Q?bzmgxzqRUqJ22cuhDLOcALuB4w9OvahGd4XSYbm8fq5x7No8T+OCOsyS8qlk?= =?us-ascii?Q?wR+D+HVUWLrblgPGDhy+FalxXg4m95s66Cxr6OIW9OyaOv26Vcspin/aH9XE?= =?us-ascii?Q?V4f/7m6av2LZrOkj1oeqIg0gvxd4GRjPdfCcJuqWXQJaPvpwlvAQ3e1v2wV6?= =?us-ascii?Q?Q=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 5:M0D3nndk4G7k7o8cNzInR2LluB9hKXEVikKIRZKbbkvKxkUDGMCBgB6pw2VwXY7nFw5N4xhNod60WfIBO1oO2xlFDroVKH/tDgIkGQpsBdZLV4D4YGvkGD+p0frOZm+8kXCToS7ASy8CIzVlWqJYsKOGrjowUa4hxOV5B+gypGm2sB90ASbOjO4PElG31xFGzbm2le9smcAFkSgVlEABkWZ+BMEOVkBt6b/KIR0KGZA16Vx/MycPMWjwV/cvVxbAmPzZT/xgsrv7e0Br3uDNlpZRBVmW7vjqfZOZTUDGZdrSvZ9l8IQFUdq71beyWP/iesxbGr9eKzeBGWeFc2E/H1paRcY23Vj3wAnJjwRG1Eyfi7pbZirzPO2qTzDQ0sJpPKVtC2sptdWA/AYKL0Ett0sXyptbYGhDvDWjOOaZ9G/ya7jBTIfmuKPXG6ziedFaGcueyMs1ILG+Y0W8Q4R2+V/yIOQARzCmUEjqddWd7H+A6lTgBq0hcHI3CpFCpV/X; 24:RmIc+XMqThxynasRwAT01ufqj034g7Wpj+q1kez+SXEIvwgAn3lLw58cUdiBkIze3gJpB02E1EYNILn5Qs34W1UuusdX0VMKWaIGnJr5pZE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3070; 7:c0criSSxViGatO5skTlwqoikOosCZm+B4K8bCt/p9fseCZslP1ShJbGWRfaYf+yxnnXQhMG8CTQPevQjR4I+FBd9qFy2Q7BBReUG/aD+zxiZaqxCkv2dj0o1KSePnLzrMFVU/eZEuvRCHJs3Fr0I3oodUeqKlg9DWNPZmAO7jh4Tftr28rPYjEDgjmVkLcwWn8A3L1+mq31yiy1QsgJDmMJ01sOHL/UWPucna4KIDD+QLZ19AeHBX3iC0909NrVuhrfYdUTa6cSUQVXc6hc4HqLCSMjwy+ZYUpLc0rEASwlKeX6hpqmY2ugzF+/zZbbvRuV8dlHDolDuoygZZ+7mJoIaQw2Ep2hegrUJnxPJYsvszpv/CoRwc1J4bCaEco/RzAodufDwtKxovgkbRa1ZCAgprABtkA8lnwKPWNl2PcKw12z/BiUeKZLjVPHo5AMJLa8Qe9cRA8rFgbf8bZjOBtHbZDsnbLa0hQvv7wcv5OHOjoc6d3HSXqLczhAttuashO7G/JrkN3X4jRmTDqT8bG3z24Z0ZRDGAqLl7D84Ugoru+HHD1kyHjt+XbhafwZX9MW7mX3GOzUVnVCe++6AfeJZGq7CJjCDLCx7MnhuDmISwtsXWrnk5qssuuy1uatwc6s/8hk9BELkY9euxblg0OI5qJf6SvuF6YCgac7+IvuZqd2O+uBFYfDyUVHiOpnJAVhRrln285VcKy7QykKeymIyYbRnyj0Ku/2IGJqhqqEAhVlInZHKjZ+zzyWWgpZ61EUhDpwTV+xw4NsBidXHDd3+4/nTaRCG9wXR3qANFxE= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jul 2017 08:52:03.3039 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3070 Currently for each input in the input file, the benchtest framework runs the microbenchmark in a loop a specific number of times before it moves onto the next input. This has the drawback that it might eliminate the cache effects and branch effects that we see in real world programs. This patch changes the framework in such a way that the microbenchmark is run only once for each input before moving onto the next input. * benchtests/bench-skeleton.c: Change benchmarking logic from running multiple times for an input to running only once for an input. * benchtests/scripts/bench.py: Add variable 'runs' to args struct to count the total number of test runs for an input. Add macro RUNS to easily access this count. Modify RESULT_ACCUM macro accordingly. --- benchtests/bench-skeleton.c | 47 +++++++++++++++++++++------------------------ benchtests/scripts/bench.py | 12 ++++++++++-- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/benchtests/bench-skeleton.c b/benchtests/bench-skeleton.c index 09eb78df1b..5707f1da65 100644 --- a/benchtests/bench-skeleton.c +++ b/benchtests/bench-skeleton.c @@ -35,7 +35,7 @@ int main (int argc, char **argv) { - unsigned long i, k; + unsigned long i; struct timespec runtime; timing_t start, end; bool detailed = false; @@ -48,15 +48,9 @@ main (int argc, char **argv) memset (&runtime, 0, sizeof (runtime)); - unsigned long iters, res; - #ifdef BENCH_INIT BENCH_INIT (); #endif - TIMING_INIT (res); - - iters = 1000 * res; - json_init (&json_ctx, 2, stdout); /* Begin function. */ @@ -68,35 +62,40 @@ main (int argc, char **argv) clock_gettime (CLOCK_MONOTONIC_RAW, &runtime); runtime.tv_sec += DURATION; - double d_total_i = 0; - timing_t total = 0, max = 0, min = 0x7fffffffffffffff; - int64_t c = 0; + double d_total_i = 0, d_max = 0, d_min = 0x7fffffffffffffff; + timing_t total = 0; while (1) { for (i = 0; i < NUM_SAMPLES (v); i++) { - uint64_t cur; + uint64_t cur, iters = 0; + double d_cur; + TIMING_NOW (start); - for (k = 0; k < iters; k++) - BENCH_FUNC (v, i); + run_bench: + BENCH_FUNC (v, i); TIMING_NOW (end); - TIMING_DIFF (cur, start, end); + iters++; + + /* If benchmark ran quickly than the clock resolution, re-run + until it can be captured by the clock. */ + if (cur == 0) + goto run_bench; - if (cur > max) - max = cur; + d_cur = (double)cur / iters; + if (d_cur > d_max) + d_max = d_cur; - if (cur < min) - min = cur; + if (d_cur < d_min) + d_min = d_cur; TIMING_ACCUM (total, cur); /* Accumulate timings for the value. In the end we will divide by the total iterations. */ - RESULT_ACCUM (cur, v, i, c * iters, (c + 1) * iters); - + RESULT_ACCUM (cur, v, i, iters); d_total_i += iters; } - c++; struct timespec curtime; memset (&curtime, 0, sizeof (curtime)); @@ -106,19 +105,17 @@ main (int argc, char **argv) } double d_total_s; - double d_iters; done: d_total_s = total; - d_iters = iters; /* Begin variant. */ json_attr_object_begin (&json_ctx, VARIANT (v)); json_attr_double (&json_ctx, "duration", d_total_s); json_attr_double (&json_ctx, "iterations", d_total_i); - json_attr_double (&json_ctx, "max", max / d_iters); - json_attr_double (&json_ctx, "min", min / d_iters); + json_attr_double (&json_ctx, "max", d_max); + json_attr_double (&json_ctx, "min", d_min); json_attr_double (&json_ctx, "mean", d_total_s / d_total_i); if (detailed) diff --git a/benchtests/scripts/bench.py b/benchtests/scripts/bench.py index 8c1c9eeb2b..d9d27e70c7 100755 --- a/benchtests/scripts/bench.py +++ b/benchtests/scripts/bench.py @@ -51,6 +51,7 @@ struct args { %(args)s double timing; + int runs; }; struct _variants @@ -82,8 +83,15 @@ struct _variants variants[%(num_variants)d] = { # Epilogue for the generated source file. EPILOGUE = ''' #define RESULT(__v, __i) (variants[(__v)].in[(__i)].timing) -#define RESULT_ACCUM(r, v, i, old, new) \\ - ((RESULT ((v), (i))) = (RESULT ((v), (i)) * (old) + (r)) / ((new) + 1)) +#define RUNS(__v, __i) (variants[(__v)].in[(__i)].runs) +#define RESULT_ACCUM(r, v, i, c) \\ + do \\ + { \\ + int old = RUNS ((v), (i)); \\ + RESULT ((v), (i)) = (RESULT ((v), (i)) * old + (r)) / (old + c); \\ + RUNS ((v), (i)) = old + c; \\ + } \\ + while (0) #define BENCH_FUNC(i, j) ({%(getret)s CALL_BENCH_FUNC (i, j);}) #define FUNCNAME "%(func)s" #include "bench-skeleton.c"'''