mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
rdelim: Speed up 'read-string' (aka. 'get-string-all'.)
This yields a 20% improvement on the "read-string" benchmark. * module/ice-9/rdelim.scm (read-string): Rewrite as a 'case-lambda', with a tight loop around 'read-char', and without using 'read-string!'. * test-suite/tests/rdelim.test ("read-string")["longer than 100 chars, with limit"]: New test. * benchmark-suite/benchmarks/ports.bm ("rdelim")["read-string"]: New benchmark.
This commit is contained in:
parent
eb6ac6efcd
commit
a41b07a34f
3 changed files with 40 additions and 24 deletions
|
@ -1,6 +1,6 @@
|
|||
;;; ports.bm --- Port I/O. -*- mode: scheme; coding: utf-8; -*-
|
||||
;;;
|
||||
;;; Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
;;; Copyright (C) 2010, 2011, 2012, 2014 Free Software Foundation, Inc.
|
||||
;;;
|
||||
;;; This program is free software; you can redistribute it and/or
|
||||
;;; modify it under the terms of the GNU Lesser General Public License
|
||||
|
@ -89,4 +89,10 @@
|
|||
(benchmark "read-line" 1000
|
||||
(let ((port (with-fluids ((%default-port-encoding "UTF-8"))
|
||||
(open-input-string str))))
|
||||
(sequence (read-line port) 1000)))))
|
||||
(sequence (read-line port) 1000))))
|
||||
|
||||
(let ((str (large-string "Hello, world.\n")))
|
||||
(benchmark "read-string" 200
|
||||
(let ((port (with-fluids ((%default-port-encoding "UTF-8"))
|
||||
(open-input-string str))))
|
||||
(read-string port)))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue