Fast read-u8vector pasted by sjamaan on Wed Jun 24 15:12:10 2015

(use extras srfi-4)

(define (read-u8vector #!optional n (p ##sys#standard-input))
  (let ((str (##sys#read-string/port n p)))
    (##core#inline "C_string_to_bytevector" str)
    (##sys#make-structure 'u8vector str)))

no title pasted by anonymous on Wed Jun 24 15:18:47 2015

with above read-u8vector (approx 124 calls per run):

-----
$ time csi -s extractor.scm
#: 124
0.14s CPU time, 0.024s GC time (major), 27453/4760 mutations (total/tracked), 5/210 GCs (major/minor)

real    0m5.221s
user    0m0.304s
sys     0m0.016s


$ time csi -s extractor.scm
#: 124
0.128s CPU time, 0.032s GC time (major), 27586/4777 mutations (total/tracked), 5/210 GCs (major/minor)

real    0m5.211s
user    0m0.284s
sys     0m0.004s


$ time csi -s extractor.scm
#: 124
0.14s CPU time, 0.02s GC time (major), 27561/4769 mutations (total/tracked), 5/210 GCs (major/minor)

real    0m5.194s
user    0m0.288s
sys     0m0.012s
-----


with original u8vector-read:

during compilation:
-----
  (stargate-lolevel.scm:170) in procedure call to `read-u8vector', expected argument #1 of type `fixnum', but was given an argument of type `false'
-----

-----
$ time csi -s extractor.scm
#: 124
0.56s CPU time, 0.028s GC time (major), 44719/8079 mutations (total/tracked), 6/4362 GCs (major/minor)

real    0m5.554s
user    0m0.700s
sys     0m0.020s

$ time csi -s extractor.scm
#: 124
0.596s CPU time, 0.036s GC time (major), 44745/8017 mutations (total/tracked), 6/4364 GCs (major/minor)

real    0m5.586s
user    0m0.724s
sys     0m0.028s


$ time csi -s extractor.scm
#: 124
0.588s CPU time, 0.028s GC time (major), 44745/8017 mutations (total/tracked), 6/4364 GCs (major/minor)

real    0m5.582s
user    0m0.724s
sys     0m0.020s
-----

no title added by anonymous on Wed Jun 24 15:21:39 2015

with (string->blob/shared (string-read ...))

-----
$ time csi -s extractor.scm
#: 124
0.136s CPU time, 0.028s GC time (major), 27528/4736 mutations (total/tracked), 4/213 GCs (major/minor)

real    0m5.201s
user    0m0.292s
sys     0m0.004s


$ time csi -s extractor.scm
#: 124
0.124s CPU time, 0.032s GC time (major), 27461/4755 mutations (total/tracked), 5/212 GCs (major/minor)

real    0m5.223s
user    0m0.292s
sys     0m0.020s

                                                  
$ time csi -s extractor.scm
#: 124
0.124s CPU time, 0.028s GC time (major), 27486/4763 mutations (total/tracked), 5/212 GCs (major/minor)

real    0m5.230s
user    0m0.308s
sys     0m0.000s
-----