Files
fil/docs/snippets/csharp/benchmarking/simple_benchmark.cs
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

103 lines
2.6 KiB
C#

```csharp title="simple_benchmark.cs"
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using Kreuzberg;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
[MemoryDiagnoser]
[SimpleJob(warmupCount: 3, targetCount: 5)]
public class KreuzbergBenchmark
{
private string _testFilePath;
private ExtractionConfig _config;
[GlobalSetup]
public void Setup()
{
_testFilePath = "document.pdf";
_config = new ExtractionConfig
{
UseCache = false,
EnableQualityProcessing = true,
};
}
[Benchmark]
public void ExtractFileSync()
{
var result = KreuzbergLib.ExtractFileSync(_testFilePath, _config);
_ = result.Content.Length;
}
[Benchmark]
public async Task ExtractFileAsync()
{
var result = await KreuzbergLib.ExtractFileAsync(_testFilePath, _config);
_ = result.Content.Length;
}
[Benchmark]
public async Task ExtractWithOcr()
{
var ocrConfig = new ExtractionConfig
{
ForceOcr = true,
Ocr = new OcrConfig
{
Backend = "tesseract",
Language = "eng",
}
};
var result = await KreuzbergLib.ExtractFileAsync(_testFilePath, ocrConfig);
_ = result.Content.Length;
}
[Benchmark]
public async Task ExtractWithCache()
{
var cacheConfig = new ExtractionConfig
{
UseCache = true,
EnableQualityProcessing = true,
};
var result = await KreuzbergLib.ExtractFileAsync(_testFilePath, cacheConfig);
_ = result.Content.Length;
}
}
public class ManualBenchmark
{
public static async Task Main(string[] args)
{
var filePath = "document.pdf";
var config = new ExtractionConfig();
await KreuzbergLib.ExtractFileAsync(filePath, config);
var sw = Stopwatch.StartNew();
for (int i = 0; i < 10; i++)
{
KreuzbergLib.ExtractFileSync(filePath, config);
}
sw.Stop();
Console.WriteLine($"Sync extraction (10 runs): {sw.ElapsedMilliseconds}ms avg {sw.ElapsedMilliseconds / 10f}ms");
sw.Restart();
var tasks = new System.Collections.Generic.List<Task>();
for (int i = 0; i < 10; i++)
{
tasks.Add(KreuzbergLib.ExtractFileAsync(filePath, config));
}
await Task.WhenAll(tasks);
sw.Stop();
Console.WriteLine($"Async extraction (10 parallel runs): {sw.ElapsedMilliseconds}ms");
var summary = BenchmarkRunner.Run<KreuzbergBenchmark>();
}
}
```