delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2019/05/06/03:09:37

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:mime-version
:content-type:content-id; q=dns; s=default; b=hMPQRhUpiRcfcbKUxu
zUU6q4clzw3PU1TjSvQ6FRfQ32VaoD7aW68Q4FCCd/hcmnN8thQCS0CExmd1VrOx
fqXuvQOngmCmC/4HDRlwyLuXVzv/WvsMYTVUjJhFq6SLO8Di5Hudfmw282E92RCh
pKkOGnLga2kJzGHK8tdFkMBwM=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:date:from:to:subject:message-id:mime-version
:content-type:content-id; s=default; bh=UG4uf1fwqgBlQcN03JGA3i0t
4g8=; b=rhkk5JIqQLphrZ2OH63ak8Nc2YeNgeu5us/HQSGx99jYcG5zYZW3I+Z5
5TQIRpxZs5e0C8EpT8moBNKNaIIuc9q/BSsDRDiOn8dXWT3paSDk0wgr52jOqYwT
YuPLmLvpNfA1XWVkvMCflJCxyAttvmunJOCBhtzEE2XT3YpnWKo=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Spam-SWARE-Status: No, score=0.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy=UD:uk, extreme, EXTREME, H*F:D*ac.uk
X-HELO: ppsw-42.csi.cam.ac.uk
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cam.ac.uk; s=20180806.ppsw; h=Content-ID:Content-Type:MIME-Version:Message-ID:Subject: To:From:Date:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=GUsVPsR22xyxufUUJnD+ydvVOkCT/r/HIx0equtbovo=; b=GNgt3JQQ7zfro/xhjhB09dcCCa ONGEywQx+97Z2QVs+B6iWp5WyTwFpaKn5MwSPVvaMmW16aVSnvPh3Ycj4yzlFnwfQNwYlwPeyNBDH GsbmURGbNMHL0EVUmIgT5a9QKBOMZTY1vKYlPY3McRUZDUy20rFG7BHcydjT6KyXStMQ=;
Date: Mon, 6 May 2019 08:09:17 +0100 (GMT Summer Time)
From: Arthur Norman <acn1 AT cam DOT ac DOT uk>
To: cygwin AT cygwin DOT com
Subject: thread_local performance using g++ for cygwin
Message-ID: <alpine.WNT.2.00.1905052026250.14000@panamint>
User-Agent: Alpine 2.00 (WNT 1167 2008-08-23)
MIME-Version: 1.0
X-IsSubscribed: yes

--2262781-27704-1557089932=:8112
Content-Type: TEXT/PLAIN; FORMAT=flowed; CHARSET=US-ASCII
Content-ID: <alpine DOT WNT DOT 2 DOT 00 DOT 1905060751281 DOT 14296 AT panamint>

The attached code tried two loops each of which just calls a function that 
increments an integer variable. One loop is a simple variable, the other 
has the thread_local qualifier. I put in ugly annotations to prevent g++ 
from inlining the functions even though I compile with -O3, but in real 
cases separate compilation forces each TL access to be independent.
The timing as between the two cases is EXTREME on cygwin (both 32 and 
64-bit) however g++ on Linux and the Microsoft compiler on Windows both 
manage to keep the base of thread-local regions in a segment register in 
such a way that the thread_local overhead is minimal. The cygwin 
thread_local overhead is large enough to be very visible in my code as a 
whole. I can see that changing to use a segment register might be a 
painful API change even if it was feasible, but has there been any 
consideration of it?
Note that x86_64-w64-mingw32-g++ and clang also do not use the segment 
register so suffer the significant speed penalty, so maybe it would be 
hard to match what Microsoft manage?

Sample output:
     simple 1.265
     thread_local 33.219


            Arthur
--2262781-27704-1557089932=:8112
Content-Type: TEXT/PLAIN; NAME=tltime.cpp
Content-Transfer-Encoding: BASE64
Content-ID: <alpine DOT WNT DOT 2 DOT 00 DOT 1905052158520 DOT 8112 AT panamint>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=tltime.cpp

I2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp0aHJlYWRf
bG9jYWwgaW50IHRsX3ZhciA9IDA7CmludCBzaW1wbGVfdmFyID0gMDsKdm9p
ZCBzaW1wbGVfaW5jKCkgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSk7CnZv
aWQgc2ltcGxlX2luYygpCnsgICBzaW1wbGVfdmFyKys7Cn0Kdm9pZCB0bF9p
bmMoKSBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKTsKdm9pZCB0bF9pbmMo
KQp7ICAgdGxfdmFyKys7Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy
Z3ZbXSkKeyAgIGNsb2NrX3QgYzAgPSBjbG9jaygpOwogICAgZm9yICh1bnNp
Z25lZCBpbnQgaT0wOyBpPDB4NDAwMDAwMDA7IGkrKykgc2ltcGxlX2luYygp
OwogICAgc3RkOjpjb3V0IDw8ICJzaW1wbGUgIiA8PCAoKGNsb2NrKCktYzAp
Lyhkb3VibGUpQ0xPQ0tTX1BFUl9TRUMpCiAgICAgICAgICAgICAgPDwgc3Rk
OjpmbHVzaCA8PCBzdGQ6OmVuZGw7CiAgICBjMCA9IGNsb2NrKCk7CiAgICBm
b3IgKHVuc2lnbmVkIGludCBpPTA7IGk8MHg0MDAwMDAwMDsgaSsrKSB0bF9p
bmMoKTsKICAgIHN0ZDo6Y291dCA8PCAidGhyZWFkX2xvY2FsICIgPDwgKChj
bG9jaygpLWMwKS8oZG91YmxlKUNMT0NLU19QRVJfU0VDKQogICAgICAgICAg
ICAgIDw8IHN0ZDo6Zmx1c2ggPDwgc3RkOjplbmRsOwogICAgcmV0dXJuIDA7
Cn0K


--2262781-27704-1557089932=:8112
Content-Type: text/plain; charset=us-ascii


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
--2262781-27704-1557089932=:8112--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019