| package humanize |
| |
| import ( |
| "fmt" |
| "regexp" |
| "strconv" |
| "testing" |
| ) |
| |
| func TestFtoa(t *testing.T) { |
| testList{ |
| {"200", Ftoa(200), "200"}, |
| {"2", Ftoa(2), "2"}, |
| {"2.2", Ftoa(2.2), "2.2"}, |
| {"2.02", Ftoa(2.02), "2.02"}, |
| {"200.02", Ftoa(200.02), "200.02"}, |
| }.validate(t) |
| } |
| |
| func BenchmarkFtoaRegexTrailing(b *testing.B) { |
| trailingZerosRegex := regexp.MustCompile(`\.?0+$`) |
| |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| trailingZerosRegex.ReplaceAllString("2.00000", "") |
| trailingZerosRegex.ReplaceAllString("2.0000", "") |
| trailingZerosRegex.ReplaceAllString("2.000", "") |
| trailingZerosRegex.ReplaceAllString("2.00", "") |
| trailingZerosRegex.ReplaceAllString("2.0", "") |
| trailingZerosRegex.ReplaceAllString("2", "") |
| } |
| } |
| |
| func BenchmarkFtoaFunc(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| stripTrailingZeros("2.00000") |
| stripTrailingZeros("2.0000") |
| stripTrailingZeros("2.000") |
| stripTrailingZeros("2.00") |
| stripTrailingZeros("2.0") |
| stripTrailingZeros("2") |
| } |
| } |
| |
| func BenchmarkFmtF(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| _ = fmt.Sprintf("%f", 2.03584) |
| } |
| } |
| |
| func BenchmarkStrconvF(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| strconv.FormatFloat(2.03584, 'f', 6, 64) |
| } |
| } |