# Go Fast Replace An implementation in Go. ## To build ````shell make build ```` ## To run ````shell make run ```` ## To test ````shell make test ```` ## Conclusions ### Replace Current implementations: - `bm` uses `strings.NewReplacer` which uses the [Boyer–Moore](https://go.dev/src/strings/search.go) algorithm. - `cw` uses [Commentz–Walter](https://en.wikipedia.org/wiki/Commentz-Walter_algorithm) algorithm. #### Results - `bm` varies a lot, but is never over _460µs_. - `cw` is a lot slower, at around _3.5ms_, but it can search for multiple patterns at once. ````shell $ make run ./bin/corpus Creating corpus... ./bin/pairs Creating pairs... ./bin/replace bm: 273.621µs cw: 2.939254ms ```` #### Todo: - Implement parallelism on the Commentz–Walter implementation. - [Boyer–Moore variants](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm#Variants) - [Rabin–Karp](https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_algorithm) algorithm. - [Aho–Corasick](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) algorithm.