From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: nalaginrut Newsgroups: gmane.lisp.guile.bugs Subject: bug#12033: format should be faster Date: Mon, 20 Aug 2012 14:27:35 +0800 Organization: HFG Message-ID: <1345444055.5141.52.camel@Renee-SUSE.suse> References: <1343023866.4060.12.camel@Renee-SUSE.suse> <87393jkfm4.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1345444081 25639 80.91.229.3 (20 Aug 2012 06:28:01 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 20 Aug 2012 06:28:01 +0000 (UTC) Cc: 12033@debbugs.gnu.org To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Mon Aug 20 08:27:59 2012 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T3LSv-0006OP-2d for guile-bugs@m.gmane.org; Mon, 20 Aug 2012 08:27:57 +0200 Original-Received: from localhost ([::1]:50907 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3LSt-0005Rd-44 for guile-bugs@m.gmane.org; Mon, 20 Aug 2012 02:27:55 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:44228) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3LSq-0005RX-It for bug-guile@gnu.org; Mon, 20 Aug 2012 02:27:53 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T3LSp-00046w-Kq for bug-guile@gnu.org; Mon, 20 Aug 2012 02:27:52 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:57932) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3LSp-00046s-HC for bug-guile@gnu.org; Mon, 20 Aug 2012 02:27:51 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1T3LT0-0006nE-9C for bug-guile@gnu.org; Mon, 20 Aug 2012 02:28:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: nalaginrut Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-guile@gnu.org Resent-Date: Mon, 20 Aug 2012 06:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12033 X-GNU-PR-Package: guile X-GNU-PR-Keywords: Original-Received: via spool by 12033-submit@debbugs.gnu.org id=B12033.134544407626100 (code B ref 12033); Mon, 20 Aug 2012 06:28:02 +0000 Original-Received: (at 12033) by debbugs.gnu.org; 20 Aug 2012 06:27:56 +0000 Original-Received: from localhost ([127.0.0.1]:39245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T3LSt-0006mu-CA for submit@debbugs.gnu.org; Mon, 20 Aug 2012 02:27:55 -0400 Original-Received: from mail-we0-f172.google.com ([74.125.82.172]:60483) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T3LSr-0006mn-6j for 12033@debbugs.gnu.org; Mon, 20 Aug 2012 02:27:54 -0400 Original-Received: by weyu54 with SMTP id u54so3824745wey.3 for <12033@debbugs.gnu.org>; Sun, 19 Aug 2012 23:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:subject:from:to:cc:date:in-reply-to:references :organization:content-type:x-mailer:content-transfer-encoding :mime-version; bh=Dt5YNPOS99qyQix7UP1KVAuLBKVc1XoZUEDyd3/NCDc=; b=Kref6/k3wkOiocXsT+ngkHpQNreFELXb4gOjH1kQInhdUmYK/mbDNE+JsB1k2NMm+4 8JgM02zhwtsPj9y+XlADUtv3KMGV8y7WVqkp5JPhTQofRkFB/I8mnQY+ZFkvfnnqO975 rUip3/GkS1/TE6sub2/qpf1MVDpMLM2FC+QXuzaac9n0EToPWXgwjKzBPCA0cAKteJaK UY7grAnpDjCrdpmaPwf6Fz2hMkb3IXmn+nJ02I6+qFn5pXrNmZI+ILWg42oTiE9l/iyv 4ugPlBDa4SH3v6na+NzEuAWTltL8psqlqQtNbEgZOf2nqXXheo+IUgf2jIIiaho9FcxR Z1Kg== Original-Received: by 10.180.106.137 with SMTP id gu9mr26135840wib.20.1345444060554; Sun, 19 Aug 2012 23:27:40 -0700 (PDT) Original-Received: from [147.2.147.112] ([61.14.130.226]) by mx.google.com with ESMTPS id l6sm26405742wiz.4.2012.08.19.23.27.37 (version=SSLv3 cipher=OTHER); Sun, 19 Aug 2012 23:27:39 -0700 (PDT) In-Reply-To: <87393jkfm4.fsf@gnu.org> X-Mailer: Evolution 3.2.3 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:6484 Archived-At: On Sun, 2012-08-19 at 00:19 +0200, Ludovic Courtès wrote: > Hi! > > nalaginrut skribis: > > > Our "format" is rather slow, > > What makes you say so? > > Did you make sure that the output port you’re writing to is buffered > (this is not the case by default!)? See ‘setvbuf’. > OK, yes, I assumed the port will be buffered in default. Should I set stdin/stdout(current-input-port/current-output-port) as buffered each time? But in my case, there's only current-output-port. And I set it as buffered, the result is the same. > > can we make it faster? I can only output strings with display if I > > need an faster program, which is not so elegant. > > Until (ice-9 format) is loaded, ‘format’ is an alias for > ‘simple-format’, which is implemented in C, less capable but faster than > (ice-9 format). Perhaps that’s usable for your use case? > But I never use (ice-9 format). There's ~15s difference between "display" and "format" in my laptop. ---------------code-1------------------ (define (main . args) (let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2)))) (display len)(newline) (let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1)) (and (< n len) (for-each (lambda (x y) (display x)(display " ")(display y)(display " ")) a b)(newline) (lp (append (list 1 (car b)) (cdr a)) (append (cdr b) (list (list-ref a m))) (1+ n)))))) -----------------end------------------- --------------code-2------------------- (define (main . args) (let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2)))) (display len)(newline) (let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1)) (and (< n len) (for-each (lambda (x y) (format #t "~a ~a~%" x y)) a b) (lp (append (list 1 (car b)) (cdr a)) (append (cdr b) (list (list-ref a m))) (1+ n)))))) ---------------end--------------------- time { echo 6000 | ./test 1>/dev/null ;} Code-1 is 0m30.326s Code-2 is 0m45.310s PS: Please use 6000 at least, or it's size is not representative. > Thanks, > Ludo’.