Hello! ludo@gnu.org (Ludovic Courtès) writes: > Steve Sprang skribis: > >> On Fri, Jan 12, 2018 at 5:28 AM, Roel Janssen wrote: >>> If we use GNU awk instead of cut, I think any whitespace will work: >>> $ guix package -A | awk '{ print $1 "@" $2 }' >>> >>> And then we can optimize the output reading experience for our users >>> instead of for the 'cut' program. >> >> I like this proposal, unless there is a strong reason to prefer 'cut'? > > Again a matter of taste, but ‘cut’ looks to me both easier and simpler > than awk (since it’s a full language). > > But anyway, as Danny write, if your patches retain tabs (in addition to > spaces), presumably it’s OK even for those of us who prefer ‘cut’, > right? > > Thanks, > Ludo’. I rebased this set of patch, and modified them slightly (attached). One thing that got my attention is the performance. For short lists of packages, it's invisible, but it takes noticeably longer for 'guix package -A', for example. I'm not sure where the time gets spent (see: https://paste.debian.net/1204412/). This is for guix package -A: --8<---------------cut here---------------start------------->8--- % cumulative self time seconds seconds procedure 17.28 37.22 3.61 guix/memoization.scm:100:0 9.52 2.25 1.99 set-procedure-property! 4.23 1.14 0.89 ice-9/vlist.scm:539:0:vhash-assq 3.70 0.77 0.77 ice-9/popen.scm:183:0:reap-pipes 3.00 0.63 0.63 ice-9/eval.scm:604:6 2.82 0.66 0.59 open-output-string 2.65 1.36 0.55 srfi/srfi-1.scm:1028:0:lset-intersection 2.29 0.48 0.48 write-char 2.12 0.44 0.44 display 1.94 0.44 0.41 ice-9/boot-9.scm:2217:0:%load-announce 1.59 0.33 0.33 hash-ref 1.59 0.33 0.33 hashq 1.41 0.41 0.30 ice-9/vlist.scm:449:0:vhash-cons 1.23 3.58 0.26 ice-9/format.scm:113:2:format:format-work 1.23 2.99 0.26 ice-9/format.scm:39:0:format 1.23 0.33 0.26 srfi/srfi-1.scm:1033:17 1.06 0.30 0.22 guix/packages.scm:924:6:mproc 1.06 0.22 0.22 string=? 1.06 0.22 0.22 hash-set! 1.06 0.22 0.22 procedure? 1.06 0.22 0.22 ice-9/boot-9.scm:3569:0:autoload-done-or-in-progress? 1.06 0.22 0.22 append 1.06 0.22 0.22 reverse! 0.88 2.80 0.18 guix/build-system/cargo.scm:246:0:lower 0.88 0.37 0.18 ice-9/eval.scm:297:11 0.88 0.18 0.18 list? 0.71 43.08 0.15 ice-9/eval.scm:292:11 0.71 24.34 0.15 guix/packages.scm:926:16 0.71 0.18 0.15 make-string 0.53 246.72 0.11 ice-9/threads.scm:388:4 0.53 32.97 0.11 guix/packages.scm:924:6 0.53 2.07 0.11 ice-9/eval.scm:159:9 0.53 1.33 0.11 ice-9/format.scm:759:2:format:out-obj-padded 0.53 0.15 0.11 get-output-string 0.53 0.11 0.11 ice-9/eval.scm:126:12 0.53 0.11 0.11 reverse [...] --- Sample count: 567 Total time: 20.913633405 seconds (12.747006885 seconds in GC) --8<---------------cut here---------------end--------------->8--- Without the change 'guix package -A' runs in about 2 seconds. With the change it runs in about 12 seconds here. Danny's suggestion to use 'guix package -A | columns -t' works too, but it's not convenient nor discoverable. Any opinions? Otherwise I might throw a coin, as I'm 50/50 on this.