[with-temp] Delay pprint in do-with-temp #197
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using
pprint
to provide context forclojure.core/testing
macro can be a bit expensive and ultimately wasteful if the test doesn't fail. I've merged a fix for this in Metabase here metabase/metabase#52830, but I've just come up with a better idea. Sinceclojure.test
ultimately callsstr
on the values insideclojure.test/*testing-contexts*
, we can pass a custom CharSequence object totesting
that doesn't compute the result until requested.Here's the effect it has on one of the slow tests,
metabase.api.downloads-exports-test/pivot-with-scale-test
: https://flamebin.dev/cQgqtG. -10% allocations and comparative speed improvement in that test.