Rob Pike
1ce6245d6c
throughout: fix broken calls to Printf etc.
...
I have written a tool to verify Printf calls, and although it's not
ready to be reviewed yet it's already uncovered a spate of problems
in the repository. I'm sending this CL to break the changes into
pieces; as the tool improves it will find more, I'm sure.
R=rsc
CC=golang-dev
https://golang.org/cl/3427043
2010-12-07 16:42:54 -05:00
Rob Pike
42cfe48ffc
use the new %U format for runes
...
R=rsc
CC=golang-dev
https://golang.org/cl/3483041
2010-12-06 14:38:25 -05:00
Roger Peppe
415545e539
bytes: add Buffer.UnreadRune, Buffer.UnreadByte
...
R=rsc, r
CC=golang-dev
https://golang.org/cl/3421041
2010-12-06 14:10:10 -05:00
Kyle Consalus
009aebdba8
Removed bytes.Add and bytes.AddByte; we now have 'append'.
...
Changed all uses of bytes.Add (aside from those testing bytes.Add) to append(a, b...).
Also ran "gofmt -s" and made use of copy([]byte, string) in the fasta benchmark.
R=golang-dev, r, r2
CC=golang-dev
https://golang.org/cl/3302042
2010-12-01 11:59:13 -08:00
Adam Langley
3cb4bdb9ce
utf8: make EncodeRune's destination the first argument.
...
R=r
CC=golang-dev
https://golang.org/cl/3364041
2010-11-30 16:59:43 -05:00
Benny Siegert
8530e8ef65
strings: add LastIndexAny
...
The need for a LastIndexAny function has come up in the discussion
for https://golang.org/cl/3008041/ . This function is
implemented analogously to lastIndexFunc, using functions from
the utf8 package.
R=r, rsc, PeterGo
CC=golang-dev
https://golang.org/cl/3057041
2010-11-12 12:47:50 -08:00
Evan Shaw
49fdfe21dd
bytes: SSE for bytes.IndexByte on amd64
...
Performance on 2.8 GHz Intel Core i7:
Before:
BenchmarkIndexByte4K 1000000 2997 ns/op 1366.70 MB/s
BenchmarkIndexByte4M 500 3049772 ns/op 1375.28 MB/s
BenchmarkIndexByte64M 50 49582280 ns/op 1353.48 MB/s
After:
BenchmarkIndexByte4K 10000000 298 ns/op 13744.97 MB/s
BenchmarkIndexByte4M 10000 285993 ns/op 14665.76 MB/s
BenchmarkIndexByte64M 500 4618172 ns/op 14531.48 MB/s
R=rsc, PeterGo, r2, r
CC=golang-dev
https://golang.org/cl/2888041
2010-11-08 17:33:53 -08:00
Russ Cox
69c4e9380b
use append
...
R=gri, r, r2
CC=golang-dev
https://golang.org/cl/2743042
2010-10-27 19:47:23 -07:00
Russ Cox
d86ab015f7
use copy
...
R=gri
CC=golang-dev
https://golang.org/cl/2763041
2010-10-26 21:52:54 -07:00
Robert Griesemer
3478891d12
gofmt -s -w src misc
...
R=r, rsc
CC=golang-dev
https://golang.org/cl/2662041
2010-10-22 10:06:33 -07:00
Andrew Gerrand
b15b0a0cd9
bytes: fix typo in AddByte comment
...
Fixes #1140 .
R=golang-dev
CC=golang-dev
https://golang.org/cl/2240043
2010-09-27 11:41:43 +10:00
Roger Peppe
81ba399a6a
bytes, strings: change lastIndexFunc to use DecodeLastRune
...
R=r
CC=golang-dev, rsc
https://golang.org/cl/2271041
2010-09-23 20:40:11 +10:00
Rob Pike
1959c3ac5b
tests: fix prints
...
- delete unnecessary newlines
- make sure formatted prints call the formatting routines
R=adg
CC=golang-dev
https://golang.org/cl/2225046
2010-09-23 13:48:56 +10:00
Russ Cox
da392d9136
build: no required environment variables
...
R=adg, r, PeterGo
CC=golang-dev
https://golang.org/cl/1942044
2010-08-18 10:08:49 -04:00
Christian Himpel
75f6a0c759
bytes: add IndexRune, FieldsFunc and To*Special
...
Basically these functions are implemented the same way as the
corresponding functions in the strings package. Test functions
are implemented for IndexRune and FieldsFunc.
Additionally two typos are fixed in packages bytes and strings.
R=r
CC=golang-dev
https://golang.org/cl/1696062
2010-08-05 23:11:06 +10:00
Scott Lawrence
99aab8bacb
bytes: added test case for explode with blank string.
...
Tests for the equivalent of the strings.explode("") panic bug (issue 980).
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/1850052
2010-08-04 13:33:24 +10:00
Andrew Gerrand
8b821696cc
bytes, strings: mention the n < 0 case in Split/SplitAfter doc comment
...
R=r, rsc
CC=golang-dev
https://golang.org/cl/1669055
2010-07-27 15:06:08 +10:00
Fazlul Shahriar
e356f1d88f
bytes: port IndexFunc and LastIndexFunc from strings package
...
This CL basically applies the same changes as
http://code.google.com/p/go/source/detail?r=5e0a29014e8e
but for bytes package.
R=r, rog
CC=golang-dev
https://golang.org/cl/1670052
2010-07-23 12:34:35 -07:00
Andrey Mirtchovski
8629e5a648
strings.Bytes: fix typo in comment
...
R=adg, rsc
CC=golang-dev
https://golang.org/cl/1886042
2010-07-21 12:01:15 -07:00
Rob Pike
de228c0e0c
bytes: add Title
...
R=rsc
CC=golang-dev
https://golang.org/cl/1872042
2010-07-20 19:53:59 -07:00
Rob Pike
38f1231f3e
strings and bytes.Split: make count of 0 mean 0, not infinite.
...
Use a count of -1 for infinity. Ditto for Replace.
R=rsc
CC=golang-dev
https://golang.org/cl/1704044
2010-07-01 14:08:14 -07:00
Russ Cox
0bf413ab8e
bytes, strings: add Replace
...
This is the Replace I suggested in the review of CL 1114041.
It's true that we already have
regexp.MustCompile(regexp.QuoteMeta(old)).ReplaceAll(s, new)
but because this Replace is doing a simpler job it is
simpler to call and inherently more efficient.
I will add the bytes implementation and tests to the
CL after the strings one has been reviewed.
R=r, cw
CC=golang-dev
https://golang.org/cl/1731048
2010-06-30 18:03:09 -07:00
Russ Cox
44ca04d3d6
big, bytes: move assembly externs to separate file
...
to make it easier to build package without assembly.
R=r, r2
CC=golang-dev
https://golang.org/cl/1680045
2010-06-21 19:53:08 -07:00
Rob Pike
9baa7a51ba
bytes.Buffer.ReadFrom: fix bug.
...
Fixes #852 .
R=rsc
CC=golang-dev
https://golang.org/cl/1680042
2010-06-15 17:40:47 -07:00
Russ Cox
bb84f4b5d2
changes &x -> x[0:] for array to slice conversion
...
R=gri
CC=golang-dev
https://golang.org/cl/1326042
2010-05-27 14:51:47 -07:00
Michael Hoisie
4a3cb1ad2f
bytes: add Trim, TrimLeft, TrimRight, and generic functions
...
R=rsc, r
CC=golang-dev
https://golang.org/cl/946045
2010-05-18 23:01:05 -07:00
Rob Pike
e1d20d0a51
bytes: Change IndexAny to look for UTF-8 encoded characters.
...
Also improve the implementations of Equals and Compare.
R=rsc
CC=golang-dev
https://golang.org/cl/969047
2010-05-03 10:59:00 -07:00
Russ Cox
78551a9b43
bytes: add Next method to Buffer, simplify Read.
...
R=r
CC=golang-dev
https://golang.org/cl/980043
2010-04-26 10:02:01 -07:00
Russ Cox
1baf35e41f
bytes: shuffle implementation, making WriteByte 50% faster
...
R=r
CC=golang-dev
https://golang.org/cl/920041
2010-04-14 01:52:56 -07:00
Russ Cox
00f9f0c056
single argument panic
...
note that sortmain.go has been run through hg gofmt;
only the formatting of the day initializers changed.
i'm happy to revert that formatting if you'd prefer.
stop on error in doc/progs/run
R=r
CC=golang-dev
https://golang.org/cl/850041
2010-03-30 10:34:57 -07:00
Robert Griesemer
d0ffee8abf
bytes, strings: IndexOfAny
...
+ first use in go/doc
R=r
CC=golang-dev
https://golang.org/cl/781041
2010-03-26 13:05:04 -07:00
Rob Pike
8c9944d8c8
bufio: WriteRune
...
also fix a printing error in the test for bytes.Buffer
R=golang-dev
CC=golang-dev
https://golang.org/cl/240042
2010-03-05 14:03:17 -08:00
Rob Pike
0ac5ef70db
Add ReadRune and WriteRune to bytes.Buffer
...
The comments mention bufio's WriteRune, which should come next.
R=rsc
CC=golang-dev
https://golang.org/cl/245041
2010-03-05 11:34:53 -08:00
Russ Cox
9750adbbad
strings: delete Runes, Bytes
...
gofmt -w -r 'strings.Bytes(a) -> []byte(a)' src/cmd src/pkg test/bench
gofmt -w -r 'strings.Runes(a) -> []int(a)' src/cmd src/pkg test/bench
delete unused imports
R=r
CC=golang-dev
https://golang.org/cl/224062
2010-02-25 16:01:29 -08:00
Robert Griesemer
cd72f77f23
apply gofmt to src and misc
...
R=rsc
CC=golang-dev
https://golang.org/cl/213041
2010-02-17 15:46:46 -08:00
Russ Cox
718be3215f
in C and asm, replace pkg·name with ·name
...
(eliminate assumption of package global name space,
make code easier to move between packages).
R=r
CC=golang-dev
https://golang.org/cl/194072
2010-01-25 18:52:55 -08:00
Yongjian Xu
ca0def6659
Remove redundant size check in resize. Let callers worry about that and resize should just do "resize".
...
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/181111
2010-01-02 11:09:22 +11:00
Rob Pike
1f0e6a4c99
new comments for bytes.NewBuffer and NewBufferString.
...
corrects a common misunderstanding about NewBuffer.
R=rsc
CC=golang-dev
https://golang.org/cl/179106
2009-12-19 08:42:31 +11:00
Andrey Mirtchovski
7f501c06f7
bytes, strings: add new function Fields
...
R=rsc, r, phf
CC=golang-dev
https://golang.org/cl/170046
2009-12-15 21:09:55 -08:00
Robert Griesemer
5a1d3323fe
1) Change default gofmt default settings for
...
parsing and printing to new syntax.
Use -oldparser to parse the old syntax,
use -oldprinter to print the old syntax.
2) Change default gofmt formatting settings
to use tabs for indentation only and to use
spaces for alignment. This will make the code
alignment insensitive to an editor's tabwidth.
Use -spaces=false to use tabs for alignment.
3) Manually changed src/exp/parser/parser_test.go
so that it doesn't try to parse the parser's
source files using the old syntax (they have
new syntax now).
4) gofmt -w src misc test/bench
1st set of files.
R=rsc
CC=agl, golang-dev, iant, ken2, r
https://golang.org/cl/180047
2009-12-15 15:33:31 -08:00
Rob Pike
d14c813377
When the buffer is empty, reset b.off to the beginning of the buffer
...
to avoid growing unnecessarily.
R=rsc
CC=golang-dev
https://golang.org/cl/176071
2009-12-14 13:13:01 +11:00
Kei Son
128974adfd
bytes, strings: allow -1 in Map to mean "drop this character".
...
xml: drop invalid characters in attribute names
when constructing struct field names.
R=rsc
CC=r
https://golang.org/cl/157104
2009-12-11 10:37:48 -08:00
Christopher Wedgwood
8c22dd24e0
Remove copyBytes completely in favor of copy.
...
R=r, rsc
https://golang.org/cl/165068
2009-12-07 11:31:56 -08:00
Rob Pike
4c0e51cd43
Make printing faster by avoiding mallocs and some other advances.
...
Roughly 33% faster for simple cases, probably more for complex ones.
Before:
mallocs per Sprintf(""): 4
mallocs per Sprintf("xxx"): 6
mallocs per Sprintf("%x"): 10
mallocs per Sprintf("%x %x"): 12
Now:
mallocs per Sprintf(""): 2
mallocs per Sprintf("xxx"): 3
mallocs per Sprintf("%x"): 5
mallocs per Sprintf("%x %x"): 7
Speed improves because of avoiding mallocs and also by sharing a bytes.Buffer
between print.go and format.go rather than copying the data back after each
printed item.
Before:
fmt_test.BenchmarkSprintfEmpty 1000000 1346 ns/op
fmt_test.BenchmarkSprintfString 500000 3461 ns/op
fmt_test.BenchmarkSprintfInt 500000 3671 ns/op
Now:
fmt_test.BenchmarkSprintfEmpty 2000000 995 ns/op
fmt_test.BenchmarkSprintfString 1000000 2745 ns/op
fmt_test.BenchmarkSprintfInt 1000000 2391 ns/op
fmt_test.BenchmarkSprintfIntInt 500000 3751 ns/op
I believe there is more to get but this is a good milestone.
R=rsc
CC=golang-dev, hong
https://golang.org/cl/166076
2009-12-06 12:03:52 -08:00
Russ Cox
d6b3f37e1e
bytes: asm for bytes.IndexByte
...
PERFORMANCE DIFFERENCE
SUMMARY
amd64 386
2.2 GHz AMD Opteron 8214 HE (Linux) 3.0x faster 8.2x faster
3.60 GHz Intel Xeon (Linux) 2.2x faster 6.2x faster
2.53 GHz Intel Core2 Duo E7200 (Linux) 1.5x faster 4.4x faster
2.66 Ghz Intel Xeon 5150 (Mac Pro, OS X) 1.5x SLOWER 3.0x faster
2.33 GHz Intel Xeon E5435 (Linux) 1.5x SLOWER 3.0x faster
2.33 GHz Intel Core2 T7600 (MacBook Pro, OS X) 1.4x SLOWER 3.0x faster
1.83 GHz Intel Core2 T5600 (Mac Mini, OS X) none* 3.0x faster
* but yesterday I consistently saw 1.4x SLOWER.
DETAILS
2.2 GHz AMD Opteron 8214 HE (Linux)
amd64 (3x faster)
IndexByte4K 500000 3733 ns/op 1097.24 MB/s
IndexByte4M 500 4328042 ns/op 969.10 MB/s
IndexByte64M 50 67866160 ns/op 988.84 MB/s
IndexBytePortable4K 200000 11161 ns/op 366.99 MB/s
IndexBytePortable4M 100 11795880 ns/op 355.57 MB/s
IndexBytePortable64M 10 188675000 ns/op 355.68 MB/s
386 (8.2x faster)
IndexByte4K 500000 3734 ns/op 1096.95 MB/s
IndexByte4M 500 4209954 ns/op 996.28 MB/s
IndexByte64M 50 68031980 ns/op 986.43 MB/s
IndexBytePortable4K 50000 30670 ns/op 133.55 MB/s
IndexBytePortable4M 50 31868220 ns/op 131.61 MB/s
IndexBytePortable64M 2 508851500 ns/op 131.88 MB/s
3.60 GHz Intel Xeon (Linux)
amd64 (2.2x faster)
IndexByte4K 500000 4612 ns/op 888.12 MB/s
IndexByte4M 500 4835250 ns/op 867.44 MB/s
IndexByte64M 20 77388450 ns/op 867.17 MB/s
IndexBytePortable4K 200000 10306 ns/op 397.44 MB/s
IndexBytePortable4M 100 11201460 ns/op 374.44 MB/s
IndexBytePortable64M 10 179456800 ns/op 373.96 MB/s
386 (6.3x faster)
IndexByte4K 500000 4631 ns/op 884.47 MB/s
IndexByte4M 500 4846388 ns/op 865.45 MB/s
IndexByte64M 20 78691200 ns/op 852.81 MB/s
IndexBytePortable4K 100000 28989 ns/op 141.29 MB/s
IndexBytePortable4M 50 31183180 ns/op 134.51 MB/s
IndexBytePortable64M 5 498347200 ns/op 134.66 MB/s
2.53 GHz Intel Core2 Duo E7200 (Linux)
amd64 (1.5x faster)
IndexByte4K 500000 6502 ns/op 629.96 MB/s
IndexByte4M 500 6692208 ns/op 626.74 MB/s
IndexByte64M 10 107410400 ns/op 624.79 MB/s
IndexBytePortable4K 200000 9721 ns/op 421.36 MB/s
IndexBytePortable4M 100 10013680 ns/op 418.86 MB/s
IndexBytePortable64M 10 160460800 ns/op 418.23 MB/s
386 (4.4x faster)
IndexByte4K 500000 6505 ns/op 629.67 MB/s
IndexByte4M 500 6694078 ns/op 626.57 MB/s
IndexByte64M 10 107397600 ns/op 624.86 MB/s
IndexBytePortable4K 100000 28835 ns/op 142.05 MB/s
IndexBytePortable4M 50 29562680 ns/op 141.88 MB/s
IndexBytePortable64M 5 473221400 ns/op 141.81 MB/s
2.66 Ghz Intel Xeon 5150 (Mac Pro, OS X)
amd64 (1.5x SLOWER)
IndexByte4K 200000 9290 ns/op 440.90 MB/s
IndexByte4M 200 9568925 ns/op 438.33 MB/s
IndexByte64M 10 154473600 ns/op 434.44 MB/s
IndexBytePortable4K 500000 6202 ns/op 660.43 MB/s
IndexBytePortable4M 500 6583614 ns/op 637.08 MB/s
IndexBytePortable64M 20 107166250 ns/op 626.21 MB/s
386 (3x faster)
IndexByte4K 200000 9301 ns/op 440.38 MB/s
IndexByte4M 200 9568025 ns/op 438.37 MB/s
IndexByte64M 10 154391000 ns/op 434.67 MB/s
IndexBytePortable4K 100000 27526 ns/op 148.80 MB/s
IndexBytePortable4M 100 28302490 ns/op 148.20 MB/s
IndexBytePortable64M 5 454170200 ns/op 147.76 MB/s
2.33 GHz Intel Xeon E5435 (Linux)
amd64 (1.5x SLOWER)
IndexByte4K 200000 10601 ns/op 386.38 MB/s
IndexByte4M 100 10827240 ns/op 387.38 MB/s
IndexByte64M 10 173175500 ns/op 387.52 MB/s
IndexBytePortable4K 500000 7082 ns/op 578.37 MB/s
IndexBytePortable4M 500 7391792 ns/op 567.43 MB/s
IndexBytePortable64M 20 122618550 ns/op 547.30 MB/s
386 (3x faster)
IndexByte4K 200000 11074 ns/op 369.88 MB/s
IndexByte4M 100 10902620 ns/op 384.71 MB/s
IndexByte64M 10 181292800 ns/op 370.17 MB/s
IndexBytePortable4K 50000 31725 ns/op 129.11 MB/s
IndexBytePortable4M 50 32564880 ns/op 128.80 MB/s
IndexBytePortable64M 2 545926000 ns/op 122.93 MB/s
2.33 GHz Intel Core2 T7600 (MacBook Pro, OS X)
amd64 (1.4x SLOWER)
IndexByte4K 200000 11120 ns/op 368.35 MB/s
IndexByte4M 100 11531950 ns/op 363.71 MB/s
IndexByte64M 10 184819000 ns/op 363.11 MB/s
IndexBytePortable4K 500000 7419 ns/op 552.10 MB/s
IndexBytePortable4M 200 8018710 ns/op 523.06 MB/s
IndexBytePortable64M 10 127614900 ns/op 525.87 MB/s
386 (3x faster)
IndexByte4K 200000 11114 ns/op 368.54 MB/s
IndexByte4M 100 11443530 ns/op 366.52 MB/s
IndexByte64M 10 185212000 ns/op 362.34 MB/s
IndexBytePortable4K 50000 32891 ns/op 124.53 MB/s
IndexBytePortable4M 50 33930580 ns/op 123.61 MB/s
IndexBytePortable64M 2 545400500 ns/op 123.05 MB/s
1.83 GHz Intel Core2 T5600 (Mac Mini, OS X)
amd64 (no difference)
IndexByte4K 200000 13497 ns/op 303.47 MB/s
IndexByte4M 100 13890650 ns/op 301.95 MB/s
IndexByte64M 5 222358000 ns/op 301.81 MB/s
IndexBytePortable4K 200000 13584 ns/op 301.53 MB/s
IndexBytePortable4M 100 13913280 ns/op 301.46 MB/s
IndexBytePortable64M 10 222572600 ns/op 301.51 MB/s
386 (3x faster)
IndexByte4K 200000 13565 ns/op 301.95 MB/s
IndexByte4M 100 13882640 ns/op 302.13 MB/s
IndexByte64M 5 221411600 ns/op 303.10 MB/s
IndexBytePortable4K 50000 39978 ns/op 102.46 MB/s
IndexBytePortable4M 50 41038160 ns/op 102.20 MB/s
IndexBytePortable64M 2 656362500 ns/op 102.24 MB/s
R=r
CC=golang-dev
https://golang.org/cl/166055
2009-12-04 10:23:43 -08:00
Rob Pike
4ed57173b4
avoid an allocation inside bytes.Buffer by providing a static array.
...
R=rsc
https://golang.org/cl/165058
2009-12-04 00:26:08 -08:00
Rob Pike
bc3e34759c
Add ReadFrom and WriteTo methods to bytes.Buffer, to enable i/o without buffer allocation.
...
Use them in Copy and Copyn.
Speed up ReadFile by using ReadFrom and avoiding Copy altogether (a minor win).
R=rsc, gri
CC=golang-dev
https://golang.org/cl/166041
2009-12-03 12:56:16 -08:00
Peter Froehlich
1eba218e44
Runes: turn string into []int
...
Split: fixed typo in documentation
R=rsc, r, r1
https://golang.org/cl/157170
2009-12-02 20:47:38 -08:00
Sergio Luis O. B. Correia
6fc820729e
go: makes it build for the case $GOROOT has whitespaces
...
the bash scripts and makefiles for building go didn't take into account
the fact $GOROOT / $GOBIN could both be directories containing whitespaces,
and was not possible to build it in such a situation.
this commit adjusts the various makefiles/scripts to make it aware of that
possibility, and now it builds successfully when using a path with whitespaces
as well.
Fixes #115 .
R=rsc, dsymonds1
https://golang.org/cl/157067
2009-11-23 17:32:51 -08:00
Russ Cox
9ac4449cb2
gofmt -r 'α[β:len(α)] -> α[β:]' -w src/cmd src/pkg
...
R=r, gri
CC=golang-dev
https://golang.org/cl/156115
2009-11-20 11:45:05 -08:00