go test ν¨ν€μ§λ₯Ό ν΅ν΄ ν μ€νΈ ν¨μ μμ± λ° μ€ν κ°λ₯, λν κ° ν¨μμ μ±λ₯μ μΈ‘μ νλ λ²€μΉλ§νΉκΉμ§ κ°λ₯ β¨
- νμΌ νμ
- "_ test.go" νμμ μ΄λ¦μΌλ‘ νμΌ(ν μ€νΈ ν¨μ) μμ±ν΄μΌ λ¨
- μ½λ λ΄ ν¨μ νμ
- μ½λ λ΄ ν μ€νΈ ν¨μλ "Test"μΌλ‘ μμν΄μΌ ν¨
- ν μ€νΈ ν¨μλ ν μ€νΈνλ €κ³ νλ ν¨μ μμ Testλ₯Ό κΌ λΆμ¬μ€μΌ λ¨ (ex. TestSum, TestMul ...)
- Test λ€μμ ν¨μμ΄λ¦μ΄ μ€λλ°, ν¨μμ΄λ¦μ 첫 κΈμλ νμ λλ¬Έμλ‘ μμ
- Test ν¨μμ νλΌλ―Έν°μ νμ * testing.T νμ μ 맀κ°λ³μλ₯Ό μ μ΄μ€
- λ²€μΉλ§νΉ
- benchmarkλ₯Ό ν΅ν΄ μνλ ν¨μμ μ±λ₯μ μΈ‘μ κ°λ₯ν¨
- μ½λ λ΄ ν¨μ νμ : μ±λ₯ μΈ‘μ νλ €λ ν¨μ μμ Benchmarkλ₯Ό κΌ λΆμ¬μ€μΌ ν¨ (ex. BenchmarkSum, BenchmarkMul ...)
- Benchmark λ€μμ ν¨μμ΄λ¦μ΄ μ€λλ°, Test ν¨μμ λμΌνκ² ν¨μμ΄λ¦μ 첫 κΈμλ νμ λλ¬Έμλ‘ μμ
- Test ν¨μμ λ§μ°¬κ°μ§λ‘, Benchmark ν¨μμ νλΌλ―Έν°μ νμ * testing.T νμ μ 맀κ°λ³μλ₯Ό μ μ΄μ€
- benchmarkλ₯Ό μννλ©΄, b.Nλ§νΌ μννκ² λλλ° μ΄λ benchmarkν ν¨μμ μ±λ₯μ΄ κ· μΌνκ²(μμ μ μΌλ‘) λμ¬λκΉμ§ μ‘°μ λλ κ²μβ¨
go test -run
: ν΄λΉ λλ ν 리μ μ‘΄μ¬νλ _ test.go νμΌ ν μ€νΈ μ€νgo test -benchmem -run=^$ -bench ^"(BenchmarkSum)"$
: ν¨μμ κ΄ν΄ ν λΉλ λ©λͺ¨λ¦¬μ loop count, 1ν μ°μ°λΉ μ€νμκ°(ns/op)μ νμΈ κ°λ₯- loop countλ λ²€μΉλ§νΉν ν΄λΉ ν¨μλ₯Ό λ°λ³΅ν μ 체 νμλ₯Ό μλ―Έ
- ν λΉλ λ©λͺ¨λ¦¬λ Bytes/op, Allocs/opλ‘ 1ν ν¨μ μ°μ° λΉ ν λΉλ λ°μ΄νΈ μ, 1ν ν¨μ μ°μ° λΉ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό μλ―Έ
- ns/opμ loop countλ₯Ό νμΈν μ μμΌλ―λ‘, TPS(Transaction Per Seconds)λ λμΆ κ°λ₯ β
- μ΄μΈμ μ΅μ μ‘΄μ¬ π
- ν μ€νΈ μ μ μ μν΄ λ°λμ νλ² μ€νλμ΄μΌ νλ ν¨μκ° μ‘΄μ¬ν λ, μ²λ¦¬ λ°©λ²
- b.Run ν¨μλ₯Ό νμ©νμ¬, νμ λ²€μΉλ§ν¬ ν μ€νΈλ₯Ό μμ±ν¨(μ¦, μ λΆλΆμ κΈ°μ‘΄ ν μ€νΈ μ§ννλ €κ³ νλ λΆλΆμ μμ±)
- b.Run ν¨μ μΈμ λΆλΆμ λ°λμ νλ²λ§ μννκ² λ¨ ββ
- μ°Έκ³ - stackoverflow : Golang benchmark setup database