From a8a6c5c794aec61e5150e68e523c9613e7f268a9 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 3 Jun 2005 10:02:20 +0000 Subject: Remove blatant inefficiency in [parray] --- ChangeLog | 5 +++++ library/parray.tcl | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c4cb103..bb09273 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-06-03 Donal K. Fellows + + * library/parray.tcl (parray): Only generate the sorted list of + element names once. Thanks to Andreas Leitgeb for spotting this. + 2005-06-03 Daniel Steffen * macosx/Makefile: fixed 'embedded' target. diff --git a/library/parray.tcl b/library/parray.tcl index 92655b2..e331d4d 100644 --- a/library/parray.tcl +++ b/library/parray.tcl @@ -1,7 +1,7 @@ # parray: # Print the contents of a global array on stdout. # -# RCS: @(#) $Id: parray.tcl,v 1.3 1998/09/14 18:40:03 stanton Exp $ +# RCS: @(#) $Id: parray.tcl,v 1.4 2005/06/03 10:02:23 dkf Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994 Sun Microsystems, Inc. @@ -16,13 +16,14 @@ proc parray {a {pattern *}} { error "\"$a\" isn't an array" } set maxl 0 - foreach name [lsort [array names array $pattern]] { + set names [lsort [array names array $pattern]] + foreach name $names { if {[string length $name] > $maxl} { set maxl [string length $name] } } set maxl [expr {$maxl + [string length $a] + 2}] - foreach name [lsort [array names array $pattern]] { + foreach name $names { set nameString [format %s(%s) $a $name] puts stdout [format "%-*s = %s" $maxl $nameString $array($name)] } -- cgit v0.12