Skip to content

Commit

Permalink
fewer allocations
Browse files Browse the repository at this point in the history
  • Loading branch information
brentp committed Feb 25, 2020
1 parent 9b39879 commit 53ff157
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
6 changes: 3 additions & 3 deletions int2str.nim
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ proc countdigits(value:int32): int {.inline.} =
result = (32 - countLeadingZeroBits(value or 1)) * 1233 shr 12
result = result - int(value < powers_of_10[result]) + 1

proc fastIntToStr*(value:int32, outstr:var string) {.inline.} =
outstr.setLen(countdigits(value))
proc fastIntToStr*(value:int32, outstr:var string, offset:int=0) {.inline.} =
outstr.setLen(offset + countdigits(value))
var value = value
var L = outstr.high
while value >= 100:
Expand Down Expand Up @@ -85,7 +85,7 @@ when isMainModule:
var outstr = newString(10)
for i in 0'i32..200_000_000:
fastIntToStr(i, outstr)
#doAssert outstr == $i
doAssert outstr == $i
echo cpuTime() - t0

t0 = cpuTime()
Expand Down
14 changes: 6 additions & 8 deletions mosdepth.nim
Original file line number Diff line number Diff line change
Expand Up @@ -666,16 +666,14 @@ proc main(bam: hts.Bam, chrom: region_t, mapq: int, eflag: uint16, iflag: uint16
else:
var line = newStringOfCap(32)
line.add(starget)
var start = newString(12)
var stop = newString(12)
var value = newString(8)
for p in gen_depths(arr):
# re-use line each time.
line.setLen(starget.len)
fastIntToStr(p.start.int32, start)
fastIntToStr(p.stop.int32, stop)
fastIntToStr(p.value.int32, value)
line.add(start); line.add('\t')
line.add(stop); line.add('\t'); line.add(value)
fastIntToStr(p.start.int32, line, line.len)
line.add('\t')
fastIntToStr(p.stop.int32, line, line.len)
line.add('\t')
fastIntToStr(p.value.int32, line, line.len)
discard fbase.write_interval(line, target.name, p.start, p.stop)
if quantize.len != 0:
if tid == -2 and quantize[0] == 0:
Expand Down

0 comments on commit 53ff157

Please sign in to comment.