internal/rosa: drop caches
All checks were successful
Test / Create distribution (push) Successful in 1m21s
Test / Sandbox (push) Successful in 3m14s
Test / Hakurei (push) Successful in 4m27s
Test / ShareFS (push) Successful in 4m31s
Test / Sandbox (race detector) (push) Successful in 5m55s
Test / Hakurei (race detector) (push) Successful in 6m55s
Test / Flake checks (push) Successful in 1m30s
All checks were successful
Test / Create distribution (push) Successful in 1m21s
Test / Sandbox (push) Successful in 3m14s
Test / Hakurei (push) Successful in 4m27s
Test / ShareFS (push) Successful in 4m31s
Test / Sandbox (race detector) (push) Successful in 5m55s
Test / Hakurei (race detector) (push) Successful in 6m55s
Test / Flake checks (push) Successful in 1m30s
This enables accurate benchmarking of the toolchain abstraction. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -307,6 +307,17 @@ var (
|
|||||||
artifactsOnce [_toolchainEnd][len(artifactsM)]sync.Once
|
artifactsOnce [_toolchainEnd][len(artifactsM)]sync.Once
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// zero zeros the value pointed to by p.
|
||||||
|
func zero[T any](p *T) { var v T; *p = v }
|
||||||
|
|
||||||
|
// DropCaches arranges for all cached [pkg.Artifact] to be freed some time after
|
||||||
|
// it returns. Must not be used concurrently with any other function from this
|
||||||
|
// package.
|
||||||
|
func DropCaches() {
|
||||||
|
zero(&artifacts)
|
||||||
|
zero(&artifactsOnce)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMetadata returns [Metadata] of a [PArtifact].
|
// GetMetadata returns [Metadata] of a [PArtifact].
|
||||||
func GetMetadata(p PArtifact) *Metadata { return &artifactsM[p] }
|
func GetMetadata(p PArtifact) *Metadata { return &artifactsM[p] }
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,18 @@ func TestLoad(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkAll(b *testing.B) {
|
||||||
|
for b.Loop() {
|
||||||
|
for i := range rosa.PresetEnd {
|
||||||
|
rosa.Std.Load(rosa.PArtifact(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
b.StopTimer()
|
||||||
|
rosa.DropCaches()
|
||||||
|
b.StartTimer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestResolveName(t *testing.T) {
|
func TestResolveName(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
@@ -91,3 +91,13 @@ func TestCureAll(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkStage3(b *testing.B) {
|
||||||
|
for b.Loop() {
|
||||||
|
rosa.Std.Load(rosa.LLVMClang)
|
||||||
|
|
||||||
|
b.StopTimer()
|
||||||
|
rosa.DropCaches()
|
||||||
|
b.StartTimer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user