Table of Contents

Class GenerateOptimizedAttribute

Namespace
TinyBDD
Assembly
TinyBDD.dll

Explicitly marks a test method for compile-time optimization via Roslyn source generation.

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public sealed class GenerateOptimizedAttribute : Attribute
Inheritance
GenerateOptimizedAttribute
Inherited Members

Remarks

**NOTE:** Starting in TinyBDD v1.1, source generation optimization is **ENABLED BY DEFAULT** for all BDD test methods. This attribute is **optional** and only needed for: - Explicitly documenting that a method should be optimized - Temporarily disabling optimization via Enabled = false

To disable optimization, prefer using DisableOptimizationAttribute instead.

The source generator transforms fluent BDD chains into direct procedural code, providing dramatic performance improvements: - **16-40x faster execution** (~814ns → ~20-50ns per step) - **9x less memory** (2,568 bytes → ~290 bytes per scenario) - No boxing/unboxing (each step uses strongly-typed variables) - No runtime casts (type transitions handled at compile-time) - No delegate allocations (lambdas inlined directly) - Optimal JIT inlining (plain method calls)

Example (explicit, but not required):

[GenerateOptimized]  // Optional - already happens by default
public async Task MyScenario()
{
    await Given("user ID", () => 123)
         .When("fetch user", id => GetUser(id))
         .Then("has email", user => user.Email != null);
}

Example (temporarily disable):

[GenerateOptimized(Enabled = false)]  // Or use [DisableOptimization]
public async Task MyScenario() { ... }

Properties

Enabled

Gets or sets whether optimization is enabled for this method. Default is true. Set to false to temporarily disable generation without removing the attribute.

public bool Enabled { get; set; }

Property Value

bool