You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since serializing large objects can sometimes take some time it would be neat if Earl would generate messages lazily, i.e., only if an assertion fails.
exportfunctiontoBeTruthy(control: Control){control.assert({success: truthy()(control.actual),reason: ()=>`The value ${formatCompact(control.actual)} is not truthy, but it was expected to be truthy.`,negatedReason: ()=>`The value ${formatCompact(control.actual)} is truthy, but it was expected not to be truthy.`,})}
I do not have benchmarks to back this claim up but I don't see why it wouldn't lead to a substantial performance gain.
The text was updated successfully, but these errors were encountered:
I have tested earl on some large project.
It results in 15...20% slower run (comparing with should.js)
Quick testing the @dhardtke idea shows at least 50% better execution time on expect(object).toEqual(...)
CPU snapshot shows that most time is consumed by formatCompact and preapreStackTrace.
As I understand, the execution of those functions is only required if test fails. Avoiding them should result in significant performance boost.
Since serializing large objects can sometimes take some time it would be neat if Earl would generate messages lazily, i.e., only if an assertion fails.
For example, instead of:
https://github.com/l2beat/earl/blob/ea923158550558c46336f0a1038ad522ec62cc43/packages/earl/src/validators/basic/toBeTruthy.ts#L38C1-L45C2
let's do something like this:
I do not have benchmarks to back this claim up but I don't see why it wouldn't lead to a substantial performance gain.
The text was updated successfully, but these errors were encountered: