From owner-freebsd-hackers@freebsd.org Sun Jan 6 16:01:28 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 444121492BD8 for ; Sun, 6 Jan 2019 16:01:28 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3126283ADD for ; Sun, 6 Jan 2019 16:01:27 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-lj1-f173.google.com with SMTP id x85-v6so36124872ljb.2 for ; Sun, 06 Jan 2019 08:01:27 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WLzsZHemNkqqijOmtXUDGB0xG1GgI7V2auLvpdp0f/g=; b=uNsyXUs8/UnV945dlGi//alr3cFac/GJzS/bDM6qdup310LBDORbJe8dr9uRegLSq9 fxHJ27puLtT4u+UM6YBXtFwrtkraWQDd8t1K2fhK8AIt10/EcaNcdfMRYZEPLCEnkLVV AidRhgt0lNPXOL04RLjswXebC0UYooBrpBW5s0P9eGoziVvHxwdeGumgHV2xGCszhbK4 xC2jF2CVOs2kO31p96Iq6ebgX+yLjxouE+BPux1DS74P1ALxMZA2jy1qwWnVs08uj492 MTnVBluM1Sy1neD8gCKtBy2Z2Mg3X33SpGpuYa7HpOYIQv/GNNh8ReNyl/R47W/1bqz4 WX6Q== X-Gm-Message-State: AJcUukf25bzShBO5xDlEyke3WNBj5Jc2jrN4J6eG1+nQXXID2u+e1Jv2 KdswwZfzXeUYRyQuyopKaDj/6AEj5yJhA9ajhc07FOTr X-Google-Smtp-Source: ALg8bN4wKfpzxDypZPb0cjbov7BadR+k0BVNfDGrUqI6aYY/auvfj2QQdeIeu6eS9N9RX/sIhg9y0WKJGbJyjPhkgxU= X-Received: by 2002:a2e:94ce:: with SMTP id r14-v6mr32294664ljh.34.1546790479585; Sun, 06 Jan 2019 08:01:19 -0800 (PST) MIME-Version: 1.0 References: <7d7bc47d-04cf-2f9b-00a3-e3d9d92b3623@aceshardware.com> <72922F2C-9D27-47AA-BB1C-2DA8589CF008@rpi.edu> <92bd5362-d898-aa12-8f3d-9fbe23f38e0c@aceshardware.com> In-Reply-To: <92bd5362-d898-aa12-8f3d-9fbe23f38e0c@aceshardware.com> From: Alan Somers Date: Sun, 6 Jan 2019 09:01:07 -0700 Message-ID: Subject: Re: Speculative: Rust for base system components To: Brian Neal Cc: Garance A Drosehn , "freebsd-hackers@freebsd.org" Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 3126283ADD X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; spf=pass (mx1.freebsd.org: domain of asomers@gmail.com designates 209.85.208.173 as permitted sender) smtp.mailfrom=asomers@gmail.com X-Spamd-Result: default: False [-4.01 / 15.00]; ARC_NA(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; DMARC_NA(0.00)[freebsd.org]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; NEURAL_HAM_SHORT(-0.89)[-0.894,0]; RCVD_IN_DNSWL_NONE(0.00)[173.208.85.209.list.dnswl.org : 127.0.5.0]; RCVD_TLS_LAST(0.00)[]; FORGED_SENDER(0.30)[asomers@freebsd.org,asomers@gmail.com]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[asomers@freebsd.org,asomers@gmail.com]; IP_SCORE(-1.11)[ipnet: 209.85.128.0/17(-3.78), asn: 15169(-1.67), country: US(-0.08)]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jan 2019 16:01:28 -0000 On Tue, Jan 1, 2019 at 12:00 AM Brian Neal wrote: > > It was a debug build with no optimization for either compiler. But we > can easily run a variety of settings for comparison: > > Compiler Flags Inst. Count Build Time > ====================================================================== > clang 7.0.0 none 33 296ms > -O3 23 341ms > rustc 1.31.0 none 110 606ms > -C opt-level=3 67 643ms > gcc 8.2 none 37 211ms > -O2 24 249ms > -O3 119* 206ms > > * With -O3, gcc unrolled and vectorized the loop. The other compilers > did not emit vectorized code at any of the standard optimization levels. > > So, essentially, double the build time and ~3 times the code for the > same logic. I get different results on Godbolt. I don't know exactly what your program was, but I tried to recreate it from your description. I wrote it in two ways. With opt-level=s, I got 13 instructions for one version, and 16 for the other. With opt-level=3, I got vectorized code for both. Here's my code: pub fn oddcount(num: i32) -> i32 { (0..num).map(|i| { if i % 2 > 0 { i } else { 0 } }).sum() } pub fn oddcount2(num: i32) -> i32 { let mut sum = 0; for i in 0..num { if i % 2 > 0 { sum += i; } } sum } -Alan