From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Arne Babenhauserheide Newsgroups: gmane.lisp.guile.user Subject: Re: out-of-control GC Date: Wed, 13 Sep 2017 22:37:21 +0200 Message-ID: <87y3pi708a.fsf@web.de> References: <87d16ve3oq.fsf@netris.org> <8760cm8jsn.fsf@web.de> <87vakmgyng.fsf@fencepost.gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Trace: blaine.gmane.org 1505338421 30245 195.159.176.226 (13 Sep 2017 21:33:41 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 13 Sep 2017 21:33:41 +0000 (UTC) Cc: guile-user@gnu.org To: David Kastrup Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Wed Sep 13 23:33:37 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsFHt-0007gq-Dh for guile-user@m.gmane.org; Wed, 13 Sep 2017 23:33:37 +0200 Original-Received: from localhost ([::1]:44759 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dsFHx-0003AO-PF for guile-user@m.gmane.org; Wed, 13 Sep 2017 17:33:41 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dsFHa-0003AC-JK for guile-user@gnu.org; Wed, 13 Sep 2017 17:33:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dsFHZ-0004Cy-Ml for guile-user@gnu.org; Wed, 13 Sep 2017 17:33:18 -0400 Original-Received: from mout.web.de ([217.72.192.78]:64711) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dsFHV-0004Ad-Tz; Wed, 13 Sep 2017 17:33:14 -0400 Original-Received: from fluss ([85.212.64.254]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MLgZ5-1dsWWq31bX-000t2p; Wed, 13 Sep 2017 23:33:11 +0200 In-reply-to: <87vakmgyng.fsf@fencepost.gnu.org> X-Provags-ID: V03:K0:v0jnj/5TS7JN6RtOHYDMob+J0FRGx8tU9BdjK7ROmWAG88M5Uvm DbunEyAP4I4unpbKs5b0hD7ZdBlEdbdmDB5mjmFLspRUSXFtmFSKySXSuSvO+nemwZPX12J nbPNMV8nE8YnlEUreUVJbQzqkLiAur6DRL5/n0vuS/8vtgGeFj8Mobkx7LFbc39pOBEaYMH LQHP3L0QCkblvfsIQO9bg== X-UI-Out-Filterresults: notjunk:1;V01:K0:BsVDGgiN+jQ=:eqVjIBjUrI/bPV2zOreTXu zHOkKlWwtg7qbBxBRux7i+tS5MvjFMvqnckPKZygYBFz8pdk6c7XYG0iWxKDAwRVLoJdNLb1h +MO8tXVVXVmCh4XsW0MwPP0U3DT9Gm1ndCKvIpHEC/BOSIBFBxkmGFO9NsY0g5/IagNz+UGYn mRsXdwapp9D2/uIILs29EA763nOxviDsLzW+MUm3jXJ3Kn47DC6u7ZU5NRyDEZm1hrhNSYNNq NrkwFucvZWkYV9k0Bi9DZDTT9nf9RBbmY1TvHHT01TAeVLGLXuMcP6+jMkn04bEFcYV1RmfUd 65+JvSaSq6IltJT29MXda4t4CfFfoZmfzDlCBXHiMxwIcfl/iJEf5jBfHu/aG1IwgpCyOMbDT kN/7o+Ngg+NvSKenqglqg0lSOihcVyOTRWJDu0D/c5MiRuS0/QkLkc6HYsQ/fdDtPKtxCz6ny zXmLmtt0fkPx1GG0wezGFi/Cj2gl++tDcCOP90004fkP4mAJH1NaE8muzi2Sbnz2bwc+3IGow /CXR4hi3fav/Wr3V660Sdp2d0LGlI/LEKMYueq4YwJuA4IYbDFROjFXs6jNhCZnMpqiL0eVwl ECbv9yyOS3LoTeyJ4i6oTZRtxrC3wNZ2mLx/U/m5XJ7mhKIb1z6MWJCKqc0w5+tFo2g/nWSxH rOsudWbfGwK1kVQbiDw5+nX6vOrREaynmTsYBShfAEvVwb9DIzalnWLtzlsZED6A7zY7pZXLd rIqEbFV75R6M6211W0EB5wqwjyTr6ZJhEx5eMofPGeQ2+LfLTg5WxBGxGQAU4DsMpzDj99oO X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.78 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:14138 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable David Kastrup writes: > Arne Babenhauserheide writes: > >> I implemented a version which avoids both points via let-recursion and >> number->string: >> >> (define (make-bgl lis cnt) >> "a bogus longer list" >> (let loop ((longer (cons (number->string cnt) lis)) >> (cnt cnt)) >> ;; periodically report statistics >> (when (eq? 0 (modulo cnt (* 1000 1000))) >> (begin (format #t "~A " cnt) (avg-gc-cpu-time))) >> (cond >> ;; periodically trim the list >> ((and (eq? 0 (modulo cnt (* 4123 1123)) (> (length longer) 0))) > > You probably mean > > ((and (eq? 0 (modulo cnt (* 4123 1123))) (> (length longer) 0)) > > instead, and (eq? 0 ...) is undefined behavior anyway even disregarding > that it let an error go unnoticed that would have bombed out had you > been using (=3D 0 ...) or equivalently (zero? ...) instead. Ah, yes, there=E2=80=99s the memoryleak. Thank you! > And (> (length longer) 0) is just horribly inefficient anyway (O(n) with > a turtle-hare hiding in the constant factor) compared to (pair? longer). I didn=E2=80=99t know that this works =E2=80=94 thank you! (pair? (list)) =E2=86=92 #f (pair? (list 1)) =E2=86=92 #t >> This does indeed spend much less time in GC, but its memory usage is >> still rising rapidly. Did I unknowingly create a memory leak? Thanks to David this is answered now. Best wishes, Arne =2D-=20 Unpolitisch sein hei=C3=9Ft politisch sein ohne es zu merken --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE801qEjXQSQPNItXAE++NRSQDw+sFAlm5pBYACgkQE++NRSQD w+uJpQ//UqvgRbbxcA8zRBfERONdT7H91FSppw748TcNcd6chBgpeWPn2e/b0UaS 3yqZo0I9PGST5OJG4BzM7LmxwokwbET1ufkQ2LzKXEc+4JmB8YdA8+NW0V8xqMTN tIyqpiwmAh22ApJ06YrTH1S8F/wmJoRPFbfstYAg/QpI6d3QyM524Eds/ozeciBw +3/N6WLXVB9YeXUlDTMsdQincT4/qYOOG3gpU3CELh9Th7B5E73E4mNuOXi1chTv KO5H2ZetEroAw2wKix6fmJg77nHJwWNav0s1yNTkIqeK/CnP4uBkvvNXWTjOlShV 3vhQeKmNEtZ+M1dplyy2x6m2KGVE1fbdDELem1BpvFcOPcY3wMLSUz9grDH0jBx4 VHFQjR7sy2ZB3+MkQjEe3OrsWafJoyUrULx2SdpJZz6Uw5mm4MhUmCn/+NnFK90u 2wVaC0/kO8JSjuEJfteAEvWCzR8iudkfFe0sP8tJJ53uKgDMJW11eOupQysWOqyo H1by91wYqlmQqORfYRTrrPhYMamYN/BAJWCB+NdfB72Sy1H33bqiKnQEXzQR4/39 T/Qh2sgbpwPhFXcvtm07bD/PmxrgycieLS+MiMo6kXGrbLhPSAHyvvOtB/Qz715p zXKQBHkXIBYViGd///f9H5DszLm5mHFGjMDc6/Dqp2kwowdaBtU= =Cb78 -----END PGP SIGNATURE----- --=-=-=--