From 5e9b804d665e516eecb18023d2d3d1633c964cb0 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 1 Aug 2018 12:52:33 -0700 Subject: [PATCH] tools.cat: significant performance improvement using binary. Before (using strings): 77MiB/s After (using byte-arrays): 3.06GiB/s --- extra/tools/cat/cat.factor | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/extra/tools/cat/cat.factor b/extra/tools/cat/cat.factor index ea90e42a38..0798d757e0 100644 --- a/extra/tools/cat/cat.factor +++ b/extra/tools/cat/cat.factor @@ -1,16 +1,15 @@ ! Copyright (C) 2010 John Benediktsson ! See http://factorcode.org/license.txt for BSD license -USING: command-line formatting kernel io io.encodings.binary -io.files namespaces sequences strings ; +USING: accessors command-line formatting fry io io.encodings +io.encodings.binary io.files kernel namespaces sequences ; IN: tools.cat -: cat-lines ( -- ) - [ print flush ] each-line ; - : cat-stream ( -- ) - [ >string write flush ] each-block ; + input-stream get dup decoder? [ stream>> ] when + output-stream get dup encoder? [ stream>> ] when + '[ _ stream-write ] each-stream-block ; : cat-file ( path -- ) dup exists? [ @@ -18,9 +17,9 @@ IN: tools.cat ] [ "%s: not found\n" printf flush ] if ; : cat-files ( paths -- ) - [ dup "-" = [ drop cat-lines ] [ cat-file ] if ] each ; + [ dup "-" = [ drop cat-stream ] [ cat-file ] if ] each ; : run-cat ( -- ) - command-line get [ cat-lines ] [ cat-files ] if-empty ; + command-line get [ cat-stream ] [ cat-files ] if-empty ; MAIN: run-cat -- 2.34.1