Skip to content

Commit

Permalink
runtime: do not zero terminate strings
Browse files Browse the repository at this point in the history
On top of "tiny allocator" (cl/38750047), reduces number of allocs by 1% on json.
No code must rely on zero termination. So will also make debugging simpler,
by uncovering issues earlier.

json-1
allocated                 7949686      7915766      -0.43%
allocs                      93778        92790      -1.05%
time                    100957795     97250949      -3.67%
rest of the metrics are too noisy.

LGTM=r
R=golang-codereviews, r, bradfitz, iant
CC=golang-codereviews
https://golang.org/cl/40370061
  • Loading branch information
dvyukov committed Jan 24, 2014
1 parent a81692e commit 9fa9613
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions src/pkg/runtime/string.goc
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,8 @@ gostringsize(intgo l)

if(l == 0)
return runtime·emptystring;
// leave room for NUL for C runtime (e.g., callers of getenv)
s.str = runtime·mallocgc(l+1, 0, FlagNoScan|FlagNoZero);
s.str = runtime·mallocgc(l, 0, FlagNoScan|FlagNoZero);
s.len = l;
s.str[l] = 0;
for(;;) {
ms = runtime·maxstring;
if((uintptr)l <= ms || runtime·casp((void**)&runtime·maxstring, (void*)ms, (void*)l))
Expand Down

0 comments on commit 9fa9613

Please sign in to comment.