diff --git a/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130146.log b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130146.log new file mode 100644 index 0000000..cf86d85 --- /dev/null +++ b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130146.log @@ -0,0 +1,93 @@ +// Validating benchmarks: +// ***** BenchmarkRunner: Start ***** +// ***** Found 1 benchmark(s) in total ***** +// ***** Building 1 exe(s) in Parallel: Start ***** +// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 3.67 sec and exited with 0 +// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" --output "/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 17.33 sec and exited with 0 +// ***** Done, took 00:00:21 (21.13 sec) ***** +// Found 1 benchmarks: +// DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob + +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 113 114 --benchmarkName DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords --job Default --benchmarkId 0 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 299667.00 ns, 299.6670 us/op + +System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. + ---> DbfSharp.Core.Exceptions.DbfNotFoundException: DBF file not found: people.dbf + at DbfSharp.Core.DbfReader.Create(String filePath, DbfReaderOptions options) in /app/DbfSharp.Core/DbfReader.cs:line 340 + at DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords() in /app/DbfSharp.Benchmark/DbfReaderBenchmarks.cs:line 14 + at BenchmarkDotNet.Autogenerated.Runnable_0.WorkloadActionNoUnroll(Int64 invokeCount) in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/DbfSharp.Benchmark-DefaultJob-1.notcs:line 311 + at BenchmarkDotNet.Engines.Engine.Measure(Action`1 action, Int64 invokeCount) + at BenchmarkDotNet.Engines.Engine.RunIteration(IterationData data) + at BenchmarkDotNet.Engines.EngineFactory.Jit(Engine engine, Int32 jitIndex, Int32 invokeCount, Int32 unrollFactor) + at BenchmarkDotNet.Engines.EngineFactory.CreateReadyToRun(EngineParameters engineParameters) + at BenchmarkDotNet.Autogenerated.Runnable_0.Run(IHost host, String benchmarkName) in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/DbfSharp.Benchmark-DefaultJob-1.notcs:line 176 + at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) + at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr) + --- End of inner exception stack trace --- + at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr) + at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) + at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) + at BenchmarkDotNet.Autogenerated.UniqueProgramName.AfterAssemblyLoadingAttached(String[] args) in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/DbfSharp.Benchmark-DefaultJob-1.notcs:line 57 +// AfterAll +No Workload Results were obtained from the run. +// Benchmark Process 4820 has exited with code 255. + +// ** Remained 0 (0.0 %) benchmark(s) to run. Estimated finish 2025-08-08 13:02 (0h 0m from now) ** +// ***** BenchmarkRunner: Finish ***** + +// * Export * + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html + +// * Detailed results * +DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +There are not any results runs + +// * Summary * + +BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat) +Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores +.NET SDK 9.0.109 + [Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + + +| Method | Mean | Error | +|----------------------------------- |-----:|------:| +| 'Read all records from a DBF file' | NA | NA | + +Benchmarks with issues: + DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob + +// * Legends * + Mean : Arithmetic mean of all measurements + Error : Half of 99.9% confidence interval + 1 ns : 1 Nanosecond (0.000000001 sec) + +// * Diagnostic Output - MemoryDiagnoser * + + +// ***** BenchmarkRunner: End ***** +Run time: 00:00:00 (0.4 sec), executed benchmarks: 1 + +Global total time: 00:00:21 (21.71 sec), executed benchmarks: 1 +// * Artifacts cleanup * +Artifacts cleanup is finished diff --git a/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130308.log b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130308.log new file mode 100644 index 0000000..e292fbc --- /dev/null +++ b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130308.log @@ -0,0 +1,176 @@ +// Validating benchmarks: +// ***** BenchmarkRunner: Start ***** +// ***** Found 1 benchmark(s) in total ***** +// ***** Building 1 exe(s) in Parallel: Start ***** +// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 6.62 sec and exited with 0 +// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" --output "/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 18.26 sec and exited with 0 +// ***** Done, took 00:00:25 (25.05 sec) ***** +// Found 1 benchmarks: +// DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob + +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 113 114 --benchmarkName DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords --job Default --benchmarkId 0 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 288501.00 ns, 288.5010 us/op +WorkloadJitting 1: 1 op, 30140263.00 ns, 30.1403 ms/op + +OverheadJitting 2: 16 op, 363121.00 ns, 22.6951 us/op +WorkloadJitting 2: 16 op, 1446368.00 ns, 90.3980 us/op + +WorkloadPilot 1: 16 op, 939888.00 ns, 58.7430 us/op +WorkloadPilot 2: 32 op, 1814393.00 ns, 56.6998 us/op +WorkloadPilot 3: 64 op, 3307920.00 ns, 51.6863 us/op +WorkloadPilot 4: 128 op, 6482129.00 ns, 50.6416 us/op +WorkloadPilot 5: 256 op, 13951201.00 ns, 54.4969 us/op +WorkloadPilot 6: 512 op, 22474772.00 ns, 43.8960 us/op +WorkloadPilot 7: 1024 op, 39491888.00 ns, 38.5663 us/op +WorkloadPilot 8: 2048 op, 83103041.00 ns, 40.5777 us/op +WorkloadPilot 9: 4096 op, 179982396.00 ns, 43.9410 us/op +WorkloadPilot 10: 8192 op, 413165656.00 ns, 50.4353 us/op +WorkloadPilot 11: 16384 op, 659961306.00 ns, 40.2808 us/op + +OverheadWarmup 1: 16384 op, 53474.00 ns, 3.2638 ns/op +OverheadWarmup 2: 16384 op, 51684.00 ns, 3.1545 ns/op +OverheadWarmup 3: 16384 op, 51425.00 ns, 3.1387 ns/op +OverheadWarmup 4: 16384 op, 58996.00 ns, 3.6008 ns/op +OverheadWarmup 5: 16384 op, 52501.00 ns, 3.2044 ns/op +OverheadWarmup 6: 16384 op, 51480.00 ns, 3.1421 ns/op +OverheadWarmup 7: 16384 op, 51500.00 ns, 3.1433 ns/op +OverheadWarmup 8: 16384 op, 51458.00 ns, 3.1407 ns/op + +OverheadActual 1: 16384 op, 52706.00 ns, 3.2169 ns/op +OverheadActual 2: 16384 op, 51699.00 ns, 3.1555 ns/op +OverheadActual 3: 16384 op, 51655.00 ns, 3.1528 ns/op +OverheadActual 4: 16384 op, 51481.00 ns, 3.1422 ns/op +OverheadActual 5: 16384 op, 52581.00 ns, 3.2093 ns/op +OverheadActual 6: 16384 op, 51494.00 ns, 3.1429 ns/op +OverheadActual 7: 16384 op, 51531.00 ns, 3.1452 ns/op +OverheadActual 8: 16384 op, 51481.00 ns, 3.1422 ns/op +OverheadActual 9: 16384 op, 52440.00 ns, 3.2007 ns/op +OverheadActual 10: 16384 op, 51471.00 ns, 3.1415 ns/op +OverheadActual 11: 16384 op, 51420.00 ns, 3.1384 ns/op +OverheadActual 12: 16384 op, 51507.00 ns, 3.1437 ns/op +OverheadActual 13: 16384 op, 52377.00 ns, 3.1968 ns/op +OverheadActual 14: 16384 op, 51606.00 ns, 3.1498 ns/op +OverheadActual 15: 16384 op, 51532.00 ns, 3.1453 ns/op + +OverheadWarmup 1: 16384 op, 51718.00 ns, 3.1566 ns/op +OverheadWarmup 2: 16384 op, 52372.00 ns, 3.1965 ns/op +OverheadWarmup 3: 16384 op, 51446.00 ns, 3.1400 ns/op +OverheadWarmup 4: 16384 op, 58767.00 ns, 3.5869 ns/op +OverheadWarmup 5: 16384 op, 51481.00 ns, 3.1422 ns/op +OverheadWarmup 6: 16384 op, 52266.00 ns, 3.1901 ns/op + +// BeforeActualRun +WorkloadActual 1: 16384 op, 393475292.00 ns, 24.0158 us/op +WorkloadActual 2: 16384 op, 399702934.00 ns, 24.3959 us/op +WorkloadActual 3: 16384 op, 380332294.00 ns, 23.2136 us/op +WorkloadActual 4: 16384 op, 391050207.00 ns, 23.8678 us/op +WorkloadActual 5: 16384 op, 388226419.00 ns, 23.6955 us/op +WorkloadActual 6: 16384 op, 390641857.00 ns, 23.8429 us/op +WorkloadActual 7: 16384 op, 390583348.00 ns, 23.8393 us/op +WorkloadActual 8: 16384 op, 387881649.00 ns, 23.6744 us/op +WorkloadActual 9: 16384 op, 387307597.00 ns, 23.6394 us/op +WorkloadActual 10: 16384 op, 393756155.00 ns, 24.0330 us/op +WorkloadActual 11: 16384 op, 390015344.00 ns, 23.8046 us/op +WorkloadActual 12: 16384 op, 392858004.00 ns, 23.9781 us/op +WorkloadActual 13: 16384 op, 390921771.00 ns, 23.8600 us/op +WorkloadActual 14: 16384 op, 392079844.00 ns, 23.9307 us/op +WorkloadActual 15: 16384 op, 386203479.00 ns, 23.5720 us/op + +// AfterActualRun +WorkloadResult 1: 16384 op, 393423760.00 ns, 24.0127 us/op +WorkloadResult 2: 16384 op, 380280762.00 ns, 23.2105 us/op +WorkloadResult 3: 16384 op, 390998675.00 ns, 23.8647 us/op +WorkloadResult 4: 16384 op, 388174887.00 ns, 23.6923 us/op +WorkloadResult 5: 16384 op, 390590325.00 ns, 23.8397 us/op +WorkloadResult 6: 16384 op, 390531816.00 ns, 23.8362 us/op +WorkloadResult 7: 16384 op, 387830117.00 ns, 23.6713 us/op +WorkloadResult 8: 16384 op, 387256065.00 ns, 23.6362 us/op +WorkloadResult 9: 16384 op, 393704623.00 ns, 24.0298 us/op +WorkloadResult 10: 16384 op, 389963812.00 ns, 23.8015 us/op +WorkloadResult 11: 16384 op, 392806472.00 ns, 23.9750 us/op +WorkloadResult 12: 16384 op, 390870239.00 ns, 23.8568 us/op +WorkloadResult 13: 16384 op, 392028312.00 ns, 23.9275 us/op +WorkloadResult 14: 16384 op, 386151947.00 ns, 23.5688 us/op +// GC: 47 11 0 1129619968 16384 +// Threading: 0 0 16384 + +// AfterAll +// Benchmark Process 5560 has exited with code 0. + +Mean = 23.780 μs, StdErr = 0.058 μs (0.24%), N = 14, StdDev = 0.216 μs +Min = 23.210 μs, Q1 = 23.677 μs, Median = 23.838 μs, Q3 = 23.912 μs, Max = 24.030 μs +IQR = 0.235 μs, LowerFence = 23.324 μs, UpperFence = 24.265 μs +ConfidenceInterval = [23.537 μs; 24.024 μs] (CI 99.9%), Margin = 0.243 μs (1.02% of Mean) +Skewness = -1.13, Kurtosis = 3.84, MValue = 2 + +// ** Remained 0 (0.0 %) benchmark(s) to run. Estimated finish 2025-08-08 13:03 (0h 0m from now) ** +// ***** BenchmarkRunner: Finish ***** + +// * Export * + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html + +// * Detailed results * +DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +Mean = 23.780 μs, StdErr = 0.058 μs (0.24%), N = 14, StdDev = 0.216 μs +Min = 23.210 μs, Q1 = 23.677 μs, Median = 23.838 μs, Q3 = 23.912 μs, Max = 24.030 μs +IQR = 0.235 μs, LowerFence = 23.324 μs, UpperFence = 24.265 μs +ConfidenceInterval = [23.537 μs; 24.024 μs] (CI 99.9%), Margin = 0.243 μs (1.02% of Mean) +Skewness = -1.13, Kurtosis = 3.84, MValue = 2 +-------------------- Histogram -------------------- +[23.093 μs ; 24.147 μs) | @@@@@@@@@@@@@@ +--------------------------------------------------- + +// * Summary * + +BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat) +Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores +.NET SDK 9.0.109 + [Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + + +| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | +|----------------------------------- |---------:|---------:|---------:|-------:|-------:|----------:| +| 'Read all records from a DBF file' | 23.78 μs | 0.243 μs | 0.216 μs | 2.8687 | 0.6714 | 67.33 KB | + +// * Hints * +Outliers + DbfReaderBenchmarks.'Read all records from a DBF file': Default -> 1 outlier was removed, 2 outliers were detected (23.21 μs, 24.40 μs) + +// * Legends * + Mean : Arithmetic mean of all measurements + Error : Half of 99.9% confidence interval + StdDev : Standard deviation of all measurements + Gen0 : GC Generation 0 collects per 1000 operations + Gen1 : GC Generation 1 collects per 1000 operations + Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B) + 1 μs : 1 Microsecond (0.000001 sec) + +// * Diagnostic Output - MemoryDiagnoser * + + +// ***** BenchmarkRunner: End ***** +Run time: 00:00:08 (8.2 sec), executed benchmarks: 1 + +Global total time: 00:00:33 (33.42 sec), executed benchmarks: 1 +// * Artifacts cleanup * +Artifacts cleanup is finished diff --git a/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130425.log b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130425.log new file mode 100644 index 0000000..a499fa3 --- /dev/null +++ b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-130425.log @@ -0,0 +1,156 @@ +// Validating benchmarks: +// ***** BenchmarkRunner: Start ***** +// ***** Found 1 benchmark(s) in total ***** +// ***** Building 1 exe(s) in Parallel: Start ***** +// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 2.18 sec and exited with 0 +// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" --output "/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 13.92 sec and exited with 0 +// ***** Done, took 00:00:16 (16.19 sec) ***** +// Found 1 benchmarks: +// DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob + +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 113 114 --benchmarkName DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords --job Default --benchmarkId 0 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 284023.00 ns, 284.0230 us/op +WorkloadJitting 1: 1 op, 80805685.00 ns, 80.8057 ms/op + +WorkloadPilot 1: 2 op, 78752493.00 ns, 39.3762 ms/op +WorkloadPilot 2: 3 op, 114160566.00 ns, 38.0535 ms/op +WorkloadPilot 3: 4 op, 214528580.00 ns, 53.6321 ms/op +WorkloadPilot 4: 5 op, 257838371.00 ns, 51.5677 ms/op +WorkloadPilot 5: 6 op, 103520063.00 ns, 17.2533 ms/op +WorkloadPilot 6: 7 op, 96919518.00 ns, 13.8456 ms/op +WorkloadPilot 7: 8 op, 109971332.00 ns, 13.7464 ms/op +WorkloadPilot 8: 9 op, 78620500.00 ns, 8.7356 ms/op +WorkloadPilot 9: 10 op, 91081558.00 ns, 9.1082 ms/op +WorkloadPilot 10: 11 op, 90101684.00 ns, 8.1911 ms/op +WorkloadPilot 11: 12 op, 99941200.00 ns, 8.3284 ms/op +WorkloadPilot 12: 13 op, 107104447.00 ns, 8.2388 ms/op +WorkloadPilot 13: 14 op, 115152190.00 ns, 8.2252 ms/op +WorkloadPilot 14: 15 op, 134851764.00 ns, 8.9901 ms/op +WorkloadPilot 15: 16 op, 131492809.00 ns, 8.2183 ms/op +WorkloadPilot 16: 32 op, 261366553.00 ns, 8.1677 ms/op +WorkloadPilot 17: 64 op, 515550164.00 ns, 8.0555 ms/op + +OverheadWarmup 1: 64 op, 3129.00 ns, 48.8906 ns/op +OverheadWarmup 2: 64 op, 1041.00 ns, 16.2656 ns/op +OverheadWarmup 3: 64 op, 737.00 ns, 11.5156 ns/op +OverheadWarmup 4: 64 op, 725.00 ns, 11.3281 ns/op +OverheadWarmup 5: 64 op, 708.00 ns, 11.0625 ns/op +OverheadWarmup 6: 64 op, 799.00 ns, 12.4844 ns/op +OverheadWarmup 7: 64 op, 673.00 ns, 10.5156 ns/op +OverheadWarmup 8: 64 op, 741.00 ns, 11.5781 ns/op +OverheadWarmup 9: 64 op, 690.00 ns, 10.7813 ns/op + +// BeforeActualRun +WorkloadActual 1: 64 op, 517056763.00 ns, 8.0790 ms/op +WorkloadActual 2: 64 op, 772250317.00 ns, 12.0664 ms/op +WorkloadActual 3: 64 op, 762451434.00 ns, 11.9133 ms/op +WorkloadActual 4: 64 op, 511433161.00 ns, 7.9911 ms/op +WorkloadActual 5: 64 op, 514545976.00 ns, 8.0398 ms/op +WorkloadActual 6: 64 op, 519900263.00 ns, 8.1234 ms/op +WorkloadActual 7: 64 op, 515509671.00 ns, 8.0548 ms/op +WorkloadActual 8: 64 op, 512792563.00 ns, 8.0124 ms/op +WorkloadActual 9: 64 op, 516450204.00 ns, 8.0695 ms/op +WorkloadActual 10: 64 op, 510792835.00 ns, 7.9811 ms/op +WorkloadActual 11: 64 op, 516532802.00 ns, 8.0708 ms/op +WorkloadActual 12: 64 op, 510899073.00 ns, 7.9828 ms/op +WorkloadActual 13: 64 op, 508843575.00 ns, 7.9507 ms/op +WorkloadActual 14: 64 op, 512775792.00 ns, 8.0121 ms/op +WorkloadActual 15: 64 op, 510563589.00 ns, 7.9776 ms/op + +// AfterActualRun +WorkloadResult 1: 64 op, 517056763.00 ns, 8.0790 ms/op +WorkloadResult 2: 64 op, 511433161.00 ns, 7.9911 ms/op +WorkloadResult 3: 64 op, 514545976.00 ns, 8.0398 ms/op +WorkloadResult 4: 64 op, 519900263.00 ns, 8.1234 ms/op +WorkloadResult 5: 64 op, 515509671.00 ns, 8.0548 ms/op +WorkloadResult 6: 64 op, 512792563.00 ns, 8.0124 ms/op +WorkloadResult 7: 64 op, 516450204.00 ns, 8.0695 ms/op +WorkloadResult 8: 64 op, 510792835.00 ns, 7.9811 ms/op +WorkloadResult 9: 64 op, 516532802.00 ns, 8.0708 ms/op +WorkloadResult 10: 64 op, 510899073.00 ns, 7.9828 ms/op +WorkloadResult 11: 64 op, 508843575.00 ns, 7.9507 ms/op +WorkloadResult 12: 64 op, 512775792.00 ns, 8.0121 ms/op +WorkloadResult 13: 64 op, 510563589.00 ns, 7.9776 ms/op +// GC: 3 1 0 81220992 64 +// Threading: 0 0 64 + +// AfterAll +// Benchmark Process 6232 has exited with code 0. + +Mean = 8.027 ms, StdErr = 0.014 ms (0.17%), N = 13, StdDev = 0.051 ms +Min = 7.951 ms, Q1 = 7.983 ms, Median = 8.012 ms, Q3 = 8.070 ms, Max = 8.123 ms +IQR = 0.087 ms, LowerFence = 7.853 ms, UpperFence = 8.200 ms +ConfidenceInterval = [7.966 ms; 8.087 ms] (CI 99.9%), Margin = 0.061 ms (0.75% of Mean) +Skewness = 0.27, Kurtosis = 1.79, MValue = 2 + +// ** Remained 0 (0.0 %) benchmark(s) to run. Estimated finish 2025-08-08 13:04 (0h 0m from now) ** +// ***** BenchmarkRunner: Finish ***** + +// * Export * + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html + +// * Detailed results * +DbfReaderBenchmarks.'Read all records from a DBF file': DefaultJob +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +Mean = 8.027 ms, StdErr = 0.014 ms (0.17%), N = 13, StdDev = 0.051 ms +Min = 7.951 ms, Q1 = 7.983 ms, Median = 8.012 ms, Q3 = 8.070 ms, Max = 8.123 ms +IQR = 0.087 ms, LowerFence = 7.853 ms, UpperFence = 8.200 ms +ConfidenceInterval = [7.966 ms; 8.087 ms] (CI 99.9%), Margin = 0.061 ms (0.75% of Mean) +Skewness = 0.27, Kurtosis = 1.79, MValue = 2 +-------------------- Histogram -------------------- +[7.922 ms ; 8.152 ms) | @@@@@@@@@@@@@ +--------------------------------------------------- + +// * Summary * + +BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat) +Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores +.NET SDK 9.0.109 + [Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + + +| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | +|----------------------------------- |---------:|----------:|----------:|--------:|--------:|----------:| +| 'Read all records from a DBF file' | 8.027 ms | 0.0606 ms | 0.0506 ms | 46.8750 | 15.6250 | 1.21 MB | + +// * Hints * +Outliers + DbfReaderBenchmarks.'Read all records from a DBF file': Default -> 2 outliers were removed (11.91 ms, 12.07 ms) + +// * Legends * + Mean : Arithmetic mean of all measurements + Error : Half of 99.9% confidence interval + StdDev : Standard deviation of all measurements + Gen0 : GC Generation 0 collects per 1000 operations + Gen1 : GC Generation 1 collects per 1000 operations + Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B) + 1 ms : 1 Millisecond (0.001 sec) + +// * Diagnostic Output - MemoryDiagnoser * + + +// ***** BenchmarkRunner: End ***** +Run time: 00:00:11 (11.95 sec), executed benchmarks: 1 + +Global total time: 00:00:28 (28.3 sec), executed benchmarks: 1 +// * Artifacts cleanup * +Artifacts cleanup is finished diff --git a/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-132849.log b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-132849.log new file mode 100644 index 0000000..b32f25a --- /dev/null +++ b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-132849.log @@ -0,0 +1,377 @@ +// Validating benchmarks: +// ***** BenchmarkRunner: Start ***** +// ***** Found 3 benchmark(s) in total ***** +// ***** Building 1 exe(s) in Parallel: Start ***** +// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 3.96 sec and exited with 0 +// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" --output "/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 17.72 sec and exited with 0 +// ***** Done, took 00:00:21 (21.88 sec) ***** +// Found 3 benchmarks: +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=10] +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=1000] +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=100000] + +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=10] +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 119 120 --benchmarkName "DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords(RowCount: 10)" --job Default --benchmarkId 0 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 240509.00 ns, 240.5090 us/op +WorkloadJitting 1: 1 op, 35248766.00 ns, 35.2488 ms/op + +WorkloadPilot 1: 2 op, 578844.00 ns, 289.4220 us/op +WorkloadPilot 2: 3 op, 729243.00 ns, 243.0810 us/op +WorkloadPilot 3: 4 op, 819585.00 ns, 204.8963 us/op +WorkloadPilot 4: 5 op, 923165.00 ns, 184.6330 us/op +WorkloadPilot 5: 6 op, 1013175.00 ns, 168.8625 us/op +WorkloadPilot 6: 7 op, 1244224.00 ns, 177.7463 us/op +WorkloadPilot 7: 8 op, 1279357.00 ns, 159.9196 us/op +WorkloadPilot 8: 9 op, 1373541.00 ns, 152.6157 us/op +WorkloadPilot 9: 10 op, 1546570.00 ns, 154.6570 us/op +WorkloadPilot 10: 11 op, 1752455.00 ns, 159.3141 us/op +WorkloadPilot 11: 12 op, 1820308.00 ns, 151.6923 us/op +WorkloadPilot 12: 13 op, 2074983.00 ns, 159.6141 us/op +WorkloadPilot 13: 14 op, 2203988.00 ns, 157.4277 us/op +WorkloadPilot 14: 15 op, 2405821.00 ns, 160.3881 us/op +WorkloadPilot 15: 16 op, 2417523.00 ns, 151.0952 us/op +WorkloadPilot 16: 32 op, 5217575.00 ns, 163.0492 us/op +WorkloadPilot 17: 64 op, 10724282.00 ns, 167.5669 us/op +WorkloadPilot 18: 128 op, 21147007.00 ns, 165.2110 us/op +WorkloadPilot 19: 256 op, 40869347.00 ns, 159.6459 us/op +WorkloadPilot 20: 512 op, 93704657.00 ns, 183.0169 us/op +WorkloadPilot 21: 1024 op, 204083095.00 ns, 199.2999 us/op +WorkloadPilot 22: 2048 op, 429284063.00 ns, 209.6114 us/op +WorkloadPilot 23: 4096 op, 312049151.00 ns, 76.1839 us/op +WorkloadPilot 24: 8192 op, 378024449.00 ns, 46.1456 us/op +WorkloadPilot 25: 16384 op, 721632265.00 ns, 44.0449 us/op + +OverheadWarmup 1: 16384 op, 76518.00 ns, 4.6703 ns/op +OverheadWarmup 2: 16384 op, 67511.00 ns, 4.1205 ns/op +OverheadWarmup 3: 16384 op, 67206.00 ns, 4.1019 ns/op +OverheadWarmup 4: 16384 op, 67273.00 ns, 4.1060 ns/op +OverheadWarmup 5: 16384 op, 68630.00 ns, 4.1888 ns/op +OverheadWarmup 6: 16384 op, 67340.00 ns, 4.1101 ns/op +OverheadWarmup 7: 16384 op, 67428.00 ns, 4.1155 ns/op +OverheadWarmup 8: 16384 op, 67388.00 ns, 4.1130 ns/op + +// BeforeActualRun +WorkloadActual 1: 16384 op, 729771303.00 ns, 44.5417 us/op +WorkloadActual 2: 16384 op, 745001280.00 ns, 45.4713 us/op +WorkloadActual 3: 16384 op, 720447280.00 ns, 43.9726 us/op +WorkloadActual 4: 16384 op, 726904200.00 ns, 44.3667 us/op +WorkloadActual 5: 16384 op, 739817394.00 ns, 45.1549 us/op +WorkloadActual 6: 16384 op, 708184641.00 ns, 43.2242 us/op +WorkloadActual 7: 16384 op, 704778334.00 ns, 43.0163 us/op +WorkloadActual 8: 16384 op, 713682382.00 ns, 43.5597 us/op +WorkloadActual 9: 16384 op, 702410114.00 ns, 42.8717 us/op +WorkloadActual 10: 16384 op, 706847867.00 ns, 43.1426 us/op +WorkloadActual 11: 16384 op, 701504927.00 ns, 42.8165 us/op +WorkloadActual 12: 16384 op, 712503839.00 ns, 43.4878 us/op +WorkloadActual 13: 16384 op, 717882326.00 ns, 43.8161 us/op +WorkloadActual 14: 16384 op, 720961938.00 ns, 44.0040 us/op +WorkloadActual 15: 16384 op, 805639308.00 ns, 49.1723 us/op +WorkloadActual 16: 16384 op, 826068013.00 ns, 50.4192 us/op +WorkloadActual 17: 16384 op, 765864283.00 ns, 46.7446 us/op +WorkloadActual 18: 16384 op, 703650533.00 ns, 42.9474 us/op +WorkloadActual 19: 16384 op, 704180120.00 ns, 42.9797 us/op +WorkloadActual 20: 16384 op, 704032685.00 ns, 42.9707 us/op +WorkloadActual 21: 16384 op, 711755954.00 ns, 43.4421 us/op +WorkloadActual 22: 16384 op, 711541672.00 ns, 43.4291 us/op +WorkloadActual 23: 16384 op, 704860038.00 ns, 43.0212 us/op + +// AfterActualRun +WorkloadResult 1: 16384 op, 729771303.00 ns, 44.5417 us/op +WorkloadResult 2: 16384 op, 745001280.00 ns, 45.4713 us/op +WorkloadResult 3: 16384 op, 720447280.00 ns, 43.9726 us/op +WorkloadResult 4: 16384 op, 726904200.00 ns, 44.3667 us/op +WorkloadResult 5: 16384 op, 739817394.00 ns, 45.1549 us/op +WorkloadResult 6: 16384 op, 708184641.00 ns, 43.2242 us/op +WorkloadResult 7: 16384 op, 704778334.00 ns, 43.0163 us/op +WorkloadResult 8: 16384 op, 713682382.00 ns, 43.5597 us/op +WorkloadResult 9: 16384 op, 702410114.00 ns, 42.8717 us/op +WorkloadResult 10: 16384 op, 706847867.00 ns, 43.1426 us/op +WorkloadResult 11: 16384 op, 701504927.00 ns, 42.8165 us/op +WorkloadResult 12: 16384 op, 712503839.00 ns, 43.4878 us/op +WorkloadResult 13: 16384 op, 717882326.00 ns, 43.8161 us/op +WorkloadResult 14: 16384 op, 720961938.00 ns, 44.0040 us/op +WorkloadResult 15: 16384 op, 703650533.00 ns, 42.9474 us/op +WorkloadResult 16: 16384 op, 704180120.00 ns, 42.9797 us/op +WorkloadResult 17: 16384 op, 704032685.00 ns, 42.9707 us/op +WorkloadResult 18: 16384 op, 711755954.00 ns, 43.4421 us/op +WorkloadResult 19: 16384 op, 711541672.00 ns, 43.4291 us/op +WorkloadResult 20: 16384 op, 704860038.00 ns, 43.0212 us/op +// GC: 56 13 0 1329250400 16384 +// Threading: 0 0 16384 + +// AfterAll +// Benchmark Process 8594 has exited with code 0. + +Mean = 43.612 μs, StdErr = 0.172 μs (0.39%), N = 20, StdDev = 0.767 μs +Min = 42.816 μs, Q1 = 43.007 μs, Median = 43.436 μs, Q3 = 43.980 μs, Max = 45.471 μs +IQR = 0.973 μs, LowerFence = 41.547 μs, UpperFence = 45.440 μs +ConfidenceInterval = [42.946 μs; 44.278 μs] (CI 99.9%), Margin = 0.666 μs (1.53% of Mean) +Skewness = 1.01, Kurtosis = 2.93, MValue = 2 + +// ** Remained 2 (66.7 %) benchmark(s) to run. Estimated finish 2025-08-08 13:30 (0h 0m from now) ** +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=1000] +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 119 120 --benchmarkName "DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords(RowCount: 1000)" --job Default --benchmarkId 1 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 234932.00 ns, 234.9320 us/op +WorkloadJitting 1: 1 op, 46395292.00 ns, 46.3953 ms/op + +WorkloadPilot 1: 2 op, 22698454.00 ns, 11.3492 ms/op +WorkloadPilot 2: 3 op, 31960387.00 ns, 10.6535 ms/op +WorkloadPilot 3: 4 op, 42113446.00 ns, 10.5284 ms/op +WorkloadPilot 4: 5 op, 50432552.00 ns, 10.0865 ms/op +WorkloadPilot 5: 6 op, 59988641.00 ns, 9.9981 ms/op +WorkloadPilot 6: 7 op, 95080491.00 ns, 13.5829 ms/op +WorkloadPilot 7: 8 op, 122922476.00 ns, 15.3653 ms/op +WorkloadPilot 8: 9 op, 132728674.00 ns, 14.7476 ms/op +WorkloadPilot 9: 10 op, 87289420.00 ns, 8.7289 ms/op +WorkloadPilot 10: 11 op, 75269533.00 ns, 6.8427 ms/op +WorkloadPilot 11: 12 op, 75138138.00 ns, 6.2615 ms/op +WorkloadPilot 12: 13 op, 73591998.00 ns, 5.6609 ms/op +WorkloadPilot 13: 14 op, 57949596.00 ns, 4.1393 ms/op +WorkloadPilot 14: 15 op, 61341763.00 ns, 4.0895 ms/op +WorkloadPilot 15: 16 op, 64877987.00 ns, 4.0549 ms/op +WorkloadPilot 16: 32 op, 104816923.00 ns, 3.2755 ms/op +WorkloadPilot 17: 64 op, 166940383.00 ns, 2.6084 ms/op +WorkloadPilot 18: 128 op, 293482144.00 ns, 2.2928 ms/op +WorkloadPilot 19: 256 op, 577367497.00 ns, 2.2553 ms/op + +OverheadWarmup 1: 256 op, 4056.00 ns, 15.8438 ns/op +OverheadWarmup 2: 256 op, 1596.00 ns, 6.2344 ns/op +OverheadWarmup 3: 256 op, 1504.00 ns, 5.8750 ns/op +OverheadWarmup 4: 256 op, 1440.00 ns, 5.6250 ns/op +OverheadWarmup 5: 256 op, 1472.00 ns, 5.7500 ns/op +OverheadWarmup 6: 256 op, 1502.00 ns, 5.8672 ns/op +OverheadWarmup 7: 256 op, 1529.00 ns, 5.9727 ns/op +OverheadWarmup 8: 256 op, 1329.00 ns, 5.1914 ns/op +OverheadWarmup 9: 256 op, 1445.00 ns, 5.6445 ns/op +OverheadWarmup 10: 256 op, 1422.00 ns, 5.5547 ns/op + +// BeforeActualRun +WorkloadActual 1: 256 op, 584166663.00 ns, 2.2819 ms/op +WorkloadActual 2: 256 op, 581981955.00 ns, 2.2734 ms/op +WorkloadActual 3: 256 op, 579783500.00 ns, 2.2648 ms/op +WorkloadActual 4: 256 op, 575124918.00 ns, 2.2466 ms/op +WorkloadActual 5: 256 op, 573575662.00 ns, 2.2405 ms/op +WorkloadActual 6: 256 op, 578847949.00 ns, 2.2611 ms/op +WorkloadActual 7: 256 op, 589271371.00 ns, 2.3018 ms/op +WorkloadActual 8: 256 op, 577739624.00 ns, 2.2568 ms/op +WorkloadActual 9: 256 op, 577178144.00 ns, 2.2546 ms/op +WorkloadActual 10: 256 op, 576734573.00 ns, 2.2529 ms/op +WorkloadActual 11: 256 op, 578882649.00 ns, 2.2613 ms/op +WorkloadActual 12: 256 op, 579810568.00 ns, 2.2649 ms/op +WorkloadActual 13: 256 op, 577866361.00 ns, 2.2573 ms/op +WorkloadActual 14: 256 op, 577323559.00 ns, 2.2552 ms/op +WorkloadActual 15: 256 op, 576819483.00 ns, 2.2532 ms/op + +// AfterActualRun +WorkloadResult 1: 256 op, 581981955.00 ns, 2.2734 ms/op +WorkloadResult 2: 256 op, 579783500.00 ns, 2.2648 ms/op +WorkloadResult 3: 256 op, 575124918.00 ns, 2.2466 ms/op +WorkloadResult 4: 256 op, 573575662.00 ns, 2.2405 ms/op +WorkloadResult 5: 256 op, 578847949.00 ns, 2.2611 ms/op +WorkloadResult 6: 256 op, 577739624.00 ns, 2.2568 ms/op +WorkloadResult 7: 256 op, 577178144.00 ns, 2.2546 ms/op +WorkloadResult 8: 256 op, 576734573.00 ns, 2.2529 ms/op +WorkloadResult 9: 256 op, 578882649.00 ns, 2.2613 ms/op +WorkloadResult 10: 256 op, 579810568.00 ns, 2.2649 ms/op +WorkloadResult 11: 256 op, 577866361.00 ns, 2.2573 ms/op +WorkloadResult 12: 256 op, 577323559.00 ns, 2.2552 ms/op +WorkloadResult 13: 256 op, 576819483.00 ns, 2.2532 ms/op +// GC: 8 1 0 208815712 256 +// Threading: 0 0 256 + +// AfterAll +// Benchmark Process 8607 has exited with code 0. + +Mean = 2.257 ms, StdErr = 0.002 ms (0.10%), N = 13, StdDev = 0.008 ms +Min = 2.241 ms, Q1 = 2.253 ms, Median = 2.257 ms, Q3 = 2.261 ms, Max = 2.273 ms +IQR = 0.008 ms, LowerFence = 2.241 ms, UpperFence = 2.273 ms +ConfidenceInterval = [2.247 ms; 2.267 ms] (CI 99.9%), Margin = 0.010 ms (0.45% of Mean) +Skewness = -0.07, Kurtosis = 2.57, MValue = 2 + +// ** Remained 1 (33.3 %) benchmark(s) to run. Estimated finish 2025-08-08 13:29 (0h 0m from now) ** +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=100000] +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 119 120 --benchmarkName "DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords(RowCount: 100000)" --job Default --benchmarkId 2 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 264269.00 ns, 264.2690 us/op +WorkloadJitting 1: 1 op, 930882802.00 ns, 930.8828 ms/op + +OverheadJitting 2: 1 op, 1004.00 ns, 1.0040 us/op +WorkloadJitting 2: 1 op, 275398886.00 ns, 275.3989 ms/op + +WorkloadPilot 1: 2 op, 465181858.00 ns, 232.5909 ms/op +WorkloadPilot 2: 3 op, 684994860.00 ns, 228.3316 ms/op + +OverheadWarmup 1: 3 op, 1067.00 ns, 355.6667 ns/op +OverheadWarmup 2: 3 op, 572.00 ns, 190.6667 ns/op +OverheadWarmup 3: 3 op, 443.00 ns, 147.6667 ns/op +OverheadWarmup 4: 3 op, 588.00 ns, 196.0000 ns/op +OverheadWarmup 5: 3 op, 535.00 ns, 178.3333 ns/op +OverheadWarmup 6: 3 op, 555.00 ns, 185.0000 ns/op +OverheadWarmup 7: 3 op, 634.00 ns, 211.3333 ns/op +OverheadWarmup 8: 3 op, 387.00 ns, 129.0000 ns/op + +// BeforeActualRun +WorkloadActual 1: 3 op, 684651345.00 ns, 228.2171 ms/op +WorkloadActual 2: 3 op, 692503348.00 ns, 230.8344 ms/op +WorkloadActual 3: 3 op, 696654120.00 ns, 232.2180 ms/op +WorkloadActual 4: 3 op, 690593852.00 ns, 230.1980 ms/op +WorkloadActual 5: 3 op, 676887126.00 ns, 225.6290 ms/op +WorkloadActual 6: 3 op, 677494459.00 ns, 225.8315 ms/op +WorkloadActual 7: 3 op, 679480145.00 ns, 226.4934 ms/op +WorkloadActual 8: 3 op, 679961506.00 ns, 226.6538 ms/op +WorkloadActual 9: 3 op, 679763220.00 ns, 226.5877 ms/op +WorkloadActual 10: 3 op, 677680060.00 ns, 225.8934 ms/op +WorkloadActual 11: 3 op, 677829865.00 ns, 225.9433 ms/op +WorkloadActual 12: 3 op, 679330110.00 ns, 226.4434 ms/op +WorkloadActual 13: 3 op, 678314955.00 ns, 226.1050 ms/op +WorkloadActual 14: 3 op, 675080797.00 ns, 225.0269 ms/op +WorkloadActual 15: 3 op, 676233143.00 ns, 225.4110 ms/op + +// AfterActualRun +WorkloadResult 1: 3 op, 684651345.00 ns, 228.2171 ms/op +WorkloadResult 2: 3 op, 676887126.00 ns, 225.6290 ms/op +WorkloadResult 3: 3 op, 677494459.00 ns, 225.8315 ms/op +WorkloadResult 4: 3 op, 679480145.00 ns, 226.4934 ms/op +WorkloadResult 5: 3 op, 679961506.00 ns, 226.6538 ms/op +WorkloadResult 6: 3 op, 679763220.00 ns, 226.5877 ms/op +WorkloadResult 7: 3 op, 677680060.00 ns, 225.8934 ms/op +WorkloadResult 8: 3 op, 677829865.00 ns, 225.9433 ms/op +WorkloadResult 9: 3 op, 679330110.00 ns, 226.4434 ms/op +WorkloadResult 10: 3 op, 678314955.00 ns, 226.1050 ms/op +WorkloadResult 11: 3 op, 675080797.00 ns, 225.0269 ms/op +WorkloadResult 12: 3 op, 676233143.00 ns, 225.4110 ms/op +// GC: 8 0 0 211324080 3 +// Threading: 0 0 3 + +// AfterAll +// Benchmark Process 8621 has exited with code 0. + +Mean = 226.186 ms, StdErr = 0.234 ms (0.10%), N = 12, StdDev = 0.809 ms +Min = 225.027 ms, Q1 = 225.781 ms, Median = 226.024 ms, Q3 = 226.517 ms, Max = 228.217 ms +IQR = 0.736 ms, LowerFence = 224.677 ms, UpperFence = 227.621 ms +ConfidenceInterval = [225.150 ms; 227.222 ms] (CI 99.9%), Margin = 1.036 ms (0.46% of Mean) +Skewness = 0.99, Kurtosis = 3.77, MValue = 2 + +// ** Remained 0 (0.0 %) benchmark(s) to run. Estimated finish 2025-08-08 13:29 (0h 0m from now) ** +// ***** BenchmarkRunner: Finish ***** + +// * Export * + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md + BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html + +// * Detailed results * +DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=10] +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +Mean = 43.612 μs, StdErr = 0.172 μs (0.39%), N = 20, StdDev = 0.767 μs +Min = 42.816 μs, Q1 = 43.007 μs, Median = 43.436 μs, Q3 = 43.980 μs, Max = 45.471 μs +IQR = 0.973 μs, LowerFence = 41.547 μs, UpperFence = 45.440 μs +ConfidenceInterval = [42.946 μs; 44.278 μs] (CI 99.9%), Margin = 0.666 μs (1.53% of Mean) +Skewness = 1.01, Kurtosis = 2.93, MValue = 2 +-------------------- Histogram -------------------- +[42.721 μs ; 43.737 μs) | @@@@@@@@@@@@@ +[43.737 μs ; 45.766 μs) | @@@@@@@ +--------------------------------------------------- + +DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=1000] +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +Mean = 2.257 ms, StdErr = 0.002 ms (0.10%), N = 13, StdDev = 0.008 ms +Min = 2.241 ms, Q1 = 2.253 ms, Median = 2.257 ms, Q3 = 2.261 ms, Max = 2.273 ms +IQR = 0.008 ms, LowerFence = 2.241 ms, UpperFence = 2.273 ms +ConfidenceInterval = [2.247 ms; 2.267 ms] (CI 99.9%), Margin = 0.010 ms (0.45% of Mean) +Skewness = -0.07, Kurtosis = 2.57, MValue = 2 +-------------------- Histogram -------------------- +[2.236 ms ; 2.278 ms) | @@@@@@@@@@@@@ +--------------------------------------------------- + +DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=100000] +Runtime = .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2; GC = Concurrent Workstation +Mean = 226.186 ms, StdErr = 0.234 ms (0.10%), N = 12, StdDev = 0.809 ms +Min = 225.027 ms, Q1 = 225.781 ms, Median = 226.024 ms, Q3 = 226.517 ms, Max = 228.217 ms +IQR = 0.736 ms, LowerFence = 224.677 ms, UpperFence = 227.621 ms +ConfidenceInterval = [225.150 ms; 227.222 ms] (CI 99.9%), Margin = 1.036 ms (0.46% of Mean) +Skewness = 0.99, Kurtosis = 3.77, MValue = 2 +-------------------- Histogram -------------------- +[224.563 ms ; 228.681 ms) | @@@@@@@@@@@@ +--------------------------------------------------- + +// * Summary * + +BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat) +Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores +.NET SDK 9.0.109 + [Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + + +| Method | RowCount | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | +|--------------------------------------------- |--------- |--------------:|-------------:|-----------:|----------:|-------:|------------:| +| 'Read all records from a generated DBF file' | 10 | 43.61 μs | 0.666 μs | 0.767 μs | 3.4180 | 0.7935 | 79.23 KB | +| 'Read all records from a generated DBF file' | 1000 | 2,257.11 μs | 10.056 μs | 8.397 μs | 31.2500 | 3.9063 | 796.57 KB | +| 'Read all records from a generated DBF file' | 100000 | 226,186.30 μs | 1,036.068 μs | 808.894 μs | 2666.6667 | - | 68790.39 KB | + +// * Hints * +Outliers + DbfReaderBenchmarks.'Read all records from a generated DBF file': Default -> 3 outliers were removed (46.74 μs..50.42 μs) + DbfReaderBenchmarks.'Read all records from a generated DBF file': Default -> 2 outliers were removed (2.28 ms, 2.30 ms) + DbfReaderBenchmarks.'Read all records from a generated DBF file': Default -> 3 outliers were removed (230.20 ms..232.22 ms) + +// * Legends * + RowCount : Value of the 'RowCount' parameter + Mean : Arithmetic mean of all measurements + Error : Half of 99.9% confidence interval + StdDev : Standard deviation of all measurements + Gen0 : GC Generation 0 collects per 1000 operations + Gen1 : GC Generation 1 collects per 1000 operations + Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B) + 1 μs : 1 Microsecond (0.000001 sec) + +// * Diagnostic Output - MemoryDiagnoser * + + +// ***** BenchmarkRunner: End ***** +Run time: 00:00:46 (46.34 sec), executed benchmarks: 3 + +Global total time: 00:01:08 (68.41 sec), executed benchmarks: 3 +// * Artifacts cleanup * +Artifacts cleanup is finished diff --git a/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-133030.log b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-133030.log new file mode 100644 index 0000000..5c3b5cc --- /dev/null +++ b/BenchmarkDotNet.Artifacts/DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-133030.log @@ -0,0 +1,136 @@ +// Validating benchmarks: +// ***** BenchmarkRunner: Start ***** +// ***** Found 3 benchmark(s) in total ***** +// ***** Building 1 exe(s) in Parallel: Start ***** +// start dotnet restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 2.76 sec and exited with 0 +// start dotnet build -c Release --no-restore /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1 /p:Deterministic=true /p:Optimize=true /p:ArtifactsPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/" /p:OutDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:OutputPath="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" /p:PublishDir="/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/publish/" --output "/app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0/" in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1 +// command took 14.55 sec and exited with 0 +// ***** Done, took 00:00:17 (17.4 sec) ***** +// Found 3 benchmarks: +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=100000] +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=1000000] +// DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=10000000] + +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=100000] +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 119 120 --benchmarkName "DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords(RowCount: 100000)" --job Default --benchmarkId 0 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 255574.00 ns, 255.5740 us/op +WorkloadJitting 1: 1 op, 897715260.00 ns, 897.7153 ms/op + +OverheadJitting 2: 1 op, 751.00 ns, 751.0000 ns/op +WorkloadJitting 2: 1 op, 246088809.00 ns, 246.0888 ms/op + +WorkloadPilot 1: 2 op, 484643939.00 ns, 242.3220 ms/op +WorkloadPilot 2: 3 op, 708920438.00 ns, 236.3068 ms/op + +OverheadWarmup 1: 3 op, 979.00 ns, 326.3333 ns/op +OverheadWarmup 2: 3 op, 581.00 ns, 193.6667 ns/op +OverheadWarmup 3: 3 op, 571.00 ns, 190.3333 ns/op +OverheadWarmup 4: 3 op, 579.00 ns, 193.0000 ns/op +OverheadWarmup 5: 3 op, 588.00 ns, 196.0000 ns/op +OverheadWarmup 6: 3 op, 555.00 ns, 185.0000 ns/op +OverheadWarmup 7: 3 op, 533.00 ns, 177.6667 ns/op +OverheadWarmup 8: 3 op, 545.00 ns, 181.6667 ns/op +OverheadWarmup 9: 3 op, 533.00 ns, 177.6667 ns/op + +// BeforeActualRun +WorkloadActual 1: 3 op, 706495304.00 ns, 235.4984 ms/op +WorkloadActual 2: 3 op, 711560060.00 ns, 237.1867 ms/op +WorkloadActual 3: 3 op, 712587847.00 ns, 237.5293 ms/op +WorkloadActual 4: 3 op, 713307578.00 ns, 237.7692 ms/op +WorkloadActual 5: 3 op, 706816319.00 ns, 235.6054 ms/op +WorkloadActual 6: 3 op, 704403979.00 ns, 234.8013 ms/op +WorkloadActual 7: 3 op, 702920500.00 ns, 234.3068 ms/op +WorkloadActual 8: 3 op, 710442254.00 ns, 236.8141 ms/op +WorkloadActual 9: 3 op, 710405132.00 ns, 236.8017 ms/op +WorkloadActual 10: 3 op, 706125897.00 ns, 235.3753 ms/op +WorkloadActual 11: 3 op, 703998599.00 ns, 234.6662 ms/op +WorkloadActual 12: 3 op, 724333672.00 ns, 241.4446 ms/op +WorkloadActual 13: 3 op, 709732762.00 ns, 236.5776 ms/op +WorkloadActual 14: 3 op, 703449850.00 ns, 234.4833 ms/op +WorkloadActual 15: 3 op, 704123827.00 ns, 234.7079 ms/op + +// AfterActualRun +WorkloadResult 1: 3 op, 706495304.00 ns, 235.4984 ms/op +WorkloadResult 2: 3 op, 711560060.00 ns, 237.1867 ms/op +WorkloadResult 3: 3 op, 712587847.00 ns, 237.5293 ms/op +WorkloadResult 4: 3 op, 713307578.00 ns, 237.7692 ms/op +WorkloadResult 5: 3 op, 706816319.00 ns, 235.6054 ms/op +WorkloadResult 6: 3 op, 704403979.00 ns, 234.8013 ms/op +WorkloadResult 7: 3 op, 702920500.00 ns, 234.3068 ms/op +WorkloadResult 8: 3 op, 710442254.00 ns, 236.8141 ms/op +WorkloadResult 9: 3 op, 710405132.00 ns, 236.8017 ms/op +WorkloadResult 10: 3 op, 706125897.00 ns, 235.3753 ms/op +WorkloadResult 11: 3 op, 703998599.00 ns, 234.6662 ms/op +WorkloadResult 12: 3 op, 709732762.00 ns, 236.5776 ms/op +WorkloadResult 13: 3 op, 703449850.00 ns, 234.4833 ms/op +WorkloadResult 14: 3 op, 704123827.00 ns, 234.7079 ms/op +// GC: 8 0 0 211324080 3 +// Threading: 0 0 3 + +// AfterAll +// Benchmark Process 9074 has exited with code 0. + +Mean = 235.866 ms, StdErr = 0.324 ms (0.14%), N = 14, StdDev = 1.213 ms +Min = 234.307 ms, Q1 = 234.731 ms, Median = 235.552 ms, Q3 = 236.811 ms, Max = 237.769 ms +IQR = 2.080 ms, LowerFence = 231.612 ms, UpperFence = 239.931 ms +ConfidenceInterval = [234.498 ms; 237.234 ms] (CI 99.9%), Margin = 1.368 ms (0.58% of Mean) +Skewness = 0.19, Kurtosis = 1.34, MValue = 2 + +// ** Remained 2 (66.7 %) benchmark(s) to run. Estimated finish 2025-08-08 13:31 (0h 0m from now) ** +// ************************** +// Benchmark: DbfReaderBenchmarks.'Read all records from a generated DBF file': DefaultJob [RowCount=1000000] +// *** Execute *** +// Launch: 1 / 1 +// Execute: dotnet DbfSharp.Benchmark-DefaultJob-1.dll --anonymousPipes 119 120 --benchmarkName "DbfSharp.Benchmark.DbfReaderBenchmarks.ReadAllRecords(RowCount: 1000000)" --job Default --benchmarkId 1 in /app/DbfSharp.Benchmark/bin/Release/net9.0/DbfSharp.Benchmark-DefaultJob-1/bin/Release/net9.0 +// Failed to set up high priority (Permission denied). In order to run benchmarks with high priority, make sure you have the right permissions. +// BeforeAnythingElse + +// Benchmark Process Environment Information: +// BenchmarkDotNet v0.15.2 +// Runtime=.NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 +// GC=Concurrent Workstation +// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256 +// Job: DefaultJob + +OverheadJitting 1: 1 op, 291712.00 ns, 291.7120 us/op +WorkloadJitting 1: 1 op, 3001795114.00 ns, 3.0018 s/op + +OverheadJitting 2: 1 op, 984.00 ns, 984.0000 ns/op +WorkloadJitting 2: 1 op, 2408120287.00 ns, 2.4081 s/op + +OverheadWarmup 1: 1 op, 1054.00 ns, 1.0540 us/op +OverheadWarmup 2: 1 op, 594.00 ns, 594.0000 ns/op +OverheadWarmup 3: 1 op, 464.00 ns, 464.0000 ns/op +OverheadWarmup 4: 1 op, 517.00 ns, 517.0000 ns/op +OverheadWarmup 5: 1 op, 490.00 ns, 490.0000 ns/op +OverheadWarmup 6: 1 op, 533.00 ns, 533.0000 ns/op +OverheadWarmup 7: 1 op, 734.00 ns, 734.0000 ns/op +OverheadWarmup 8: 1 op, 689.00 ns, 689.0000 ns/op + +// BeforeActualRun +WorkloadActual 1: 1 op, 2277004383.00 ns, 2.2770 s/op +WorkloadActual 2: 1 op, 2284348599.00 ns, 2.2843 s/op +WorkloadActual 3: 1 op, 2306145377.00 ns, 2.3061 s/op +WorkloadActual 4: 1 op, 2276236872.00 ns, 2.2762 s/op +WorkloadActual 5: 1 op, 2278872221.00 ns, 2.2789 s/op +WorkloadActual 6: 1 op, 2265595653.00 ns, 2.2656 s/op +WorkloadActual 7: 1 op, 2280190383.00 ns, 2.2802 s/op +WorkloadActual 8: 1 op, 2278568008.00 ns, 2.2786 s/op +WorkloadActual 9: 1 op, 2271916430.00 ns, 2.2719 s/op +WorkloadActual 10: 1 op, 2266336141.00 ns, 2.2663 s/op +WorkloadActual 11: 1 op, 2285271097.00 ns, 2.2853 s/op +WorkloadActual 12: 1 op, 2310206 \ No newline at end of file diff --git a/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md new file mode 100644 index 0000000..476a874 --- /dev/null +++ b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report-github.md @@ -0,0 +1,15 @@ +``` + +BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat) +Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores +.NET SDK 9.0.109 + [Host] : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2 + + +``` +| Method | RowCount | Mean | Error | StdDev | Median | Gen0 | Gen1 | Allocated | +|--------------------------------------------- |--------- |------------:|----------:|----------:|------------:|------------:|----------:|-----------:| +| **'Read all records from a generated DBF file'** | **100000** | **235.9 ms** | **1.37 ms** | **1.21 ms** | **235.6 ms** | **2666.6667** | **-** | **67.18 MB** | +| **'Read all records from a generated DBF file'** | **1000000** | **2,281.9 ms** | **15.83 ms** | **13.22 ms** | **2,278.9 ms** | **31000.0000** | **-** | **698.9 MB** | +| **'Read all records from a generated DBF file'** | **10000000** | **23,486.2 ms** | **467.46 ms** | **986.03 ms** | **22,963.4 ms** | **312000.0000** | **2000.0000** | **7016.15 MB** | diff --git a/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv new file mode 100644 index 0000000..dc5f834 --- /dev/null +++ b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.csv @@ -0,0 +1,4 @@ +Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,RowCount,Mean,Error,StdDev,Median,Gen0,Gen1,Allocated +'Read all records from a generated DBF file',DefaultJob,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,100000,235.9 ms,1.37 ms,1.21 ms,235.6 ms,2666.6667,0.0000,67.18 MB +'Read all records from a generated DBF file',DefaultJob,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1000000,"2,281.9 ms",15.83 ms,13.22 ms,"2,278.9 ms",31000.0000,0.0000,698.9 MB +'Read all records from a generated DBF file',DefaultJob,False,Default,Default,Default,Default,Default,Default,1111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 9.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10000000,"23,486.2 ms",467.46 ms,986.03 ms,"22,963.4 ms",312000.0000,2000.0000,7016.15 MB diff --git a/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html new file mode 100644 index 0000000..3e1f095 --- /dev/null +++ b/BenchmarkDotNet.Artifacts/results/DbfSharp.Benchmark.DbfReaderBenchmarks-report.html @@ -0,0 +1,32 @@ + + + + +DbfSharp.Benchmark.DbfReaderBenchmarks-20250808-133048 + + + + +

+BenchmarkDotNet v0.15.2, Linux Ubuntu 24.04.2 LTS (Noble Numbat)
+Intel Xeon Processor 2.30GHz, 1 CPU, 4 logical and 4 physical cores
+.NET SDK 9.0.109
+  [Host]     : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
+  DefaultJob : .NET 9.0.8 (9.0.825.36511), X64 RyuJIT AVX2
+
+
+ + + + + + + +
Method RowCountMean ErrorStdDevMedianGen0 Gen1Allocated
'Read all records from a generated DBF file'100000235.9 ms1.37 ms1.21 ms235.6 ms2666.6667-67.18 MB
'Read all records from a generated DBF file'10000002,281.9 ms15.83 ms13.22 ms2,278.9 ms31000.0000-698.9 MB
'Read all records from a generated DBF file'1000000023,486.2 ms467.46 ms986.03 ms22,963.4 ms312000.00002000.00007016.15 MB
+ + diff --git a/DbfSharp.Benchmark/DbfFileGenerator.cs b/DbfSharp.Benchmark/DbfFileGenerator.cs new file mode 100644 index 0000000..ec6e641 --- /dev/null +++ b/DbfSharp.Benchmark/DbfFileGenerator.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace DbfSharp.Benchmark +{ + public class DbfFieldInfo + { + public string Name { get; } + public char Type { get; } + public int Length { get; } + public int DecimalCount { get; } + + public DbfFieldInfo(string name, char type, int length, int decimalCount = 0) + { + Name = name; + Type = type; + Length = length; + DecimalCount = decimalCount; + } + } + + public class DbfFileGenerator + { + public static void Generate(string path, int rowCount, List fields) + { + using (var stream = new FileStream(path, FileMode.Create)) + using (var writer = new BinaryWriter(stream)) + { + // Header + writer.Write((byte)0x03); // Version: dBase III plus, no memo + writer.Write((byte)(DateTime.Now.Year - 1900)); + writer.Write((byte)DateTime.Now.Month); + writer.Write((byte)DateTime.Now.Day); + writer.Write(rowCount); + + short headerLength = (short)(32 * (fields.Count + 1) + 1); + writer.Write(headerLength); + + short recordLength = 1; // Deletion flag + foreach (var field in fields) + { + recordLength += (short)field.Length; + } + writer.Write(recordLength); + + for (int i = 0; i < 20; i++) + { + writer.Write((byte)0x00); + } + + // Field descriptors + foreach (var field in fields) + { + byte[] fieldNameBytes = new byte[11]; + Encoding.ASCII.GetBytes(field.Name, 0, field.Name.Length, fieldNameBytes, 0); + writer.Write(fieldNameBytes); + + writer.Write((byte)field.Type); + writer.Write(0); // Field data address + writer.Write((byte)field.Length); + writer.Write((byte)field.DecimalCount); + + for (int i = 0; i < 14; i++) + { + writer.Write((byte)0x00); + } + } + + writer.Write((byte)0x0D); // Header terminator + + // Data records + for (int i = 0; i < rowCount; i++) + { + writer.Write((byte)0x20); // Deletion flag: not deleted + + foreach (var field in fields) + { + string value = ""; + switch (field.Type) + { + case 'C': + value = $"Row {i + 1} Col {field.Name}".PadRight(field.Length, ' '); + if (value.Length > field.Length) + value = value.Substring(0, field.Length); + break; + case 'N': + value = (i + 1).ToString().PadLeft(field.Length, ' '); + break; + case 'D': + value = DateTime.Now.ToString("yyyyMMdd"); + break; + case 'L': + value = (i % 2 == 0) ? "T" : "F"; + break; + } + + byte[] buffer = Encoding.ASCII.GetBytes(value); + writer.Write(buffer); + } + } + + writer.Write((byte)0x1A); // End of file marker + } + } + } +} diff --git a/DbfSharp.Benchmark/DbfReaderBenchmarks.cs b/DbfSharp.Benchmark/DbfReaderBenchmarks.cs new file mode 100644 index 0000000..5ed2011 --- /dev/null +++ b/DbfSharp.Benchmark/DbfReaderBenchmarks.cs @@ -0,0 +1,62 @@ +using BenchmarkDotNet.Attributes; +using DbfSharp.Core; +using System.Collections.Generic; +using System.IO; + +namespace DbfSharp.Benchmark +{ + [MemoryDiagnoser] + public class DbfReaderBenchmarks + { + private string _dbfPath; + private readonly List _fields; + + [Params(100_000, 1_000_000)] + public int RowCount; + + public DbfReaderBenchmarks() + { + _fields = new List + { + new DbfFieldInfo("ID", 'N', 10), + new DbfFieldInfo("NAME", 'C', 50), + new DbfFieldInfo("EMAIL", 'C', 50), + new DbfFieldInfo("JOIN_DATE", 'D', 8), + new DbfFieldInfo("SCORE", 'N', 10, 2), + new DbfFieldInfo("ADDRESS", 'C', 100), + new DbfFieldInfo("CITY", 'C', 50), + new DbfFieldInfo("STATE", 'C', 2), + new DbfFieldInfo("ZIP", 'C', 10), + new DbfFieldInfo("NOTES", 'C', 100) + }; + } + + [GlobalSetup] + public void GlobalSetup() + { + _dbfPath = Path.Combine(Path.GetTempPath(), $"benchmark_{RowCount}.dbf"); + DbfFileGenerator.Generate(_dbfPath, RowCount, _fields); + } + + [GlobalCleanup] + public void GlobalCleanup() + { + if (File.Exists(_dbfPath)) + { + File.Delete(_dbfPath); + } + } + + [Benchmark(Description = "Read all records from a generated DBF file")] + public void ReadAllRecords() + { + using (var dbf = DbfReader.Create(_dbfPath)) + { + foreach (var record in dbf) + { + // This loop will consume the IEnumerable and trigger reading of all records. + } + } + } + } +} diff --git a/DbfSharp.Benchmark/DbfSharp.Benchmark.csproj b/DbfSharp.Benchmark/DbfSharp.Benchmark.csproj new file mode 100644 index 0000000..779d5f4 --- /dev/null +++ b/DbfSharp.Benchmark/DbfSharp.Benchmark.csproj @@ -0,0 +1,24 @@ + + + + Exe + net9.0 + enable + enable + + + + + + + + + + + + + PreserveNewest + + + + diff --git a/DbfSharp.Benchmark/Program.cs b/DbfSharp.Benchmark/Program.cs new file mode 100644 index 0000000..a2f9387 --- /dev/null +++ b/DbfSharp.Benchmark/Program.cs @@ -0,0 +1,10 @@ +using BenchmarkDotNet.Running; +using DbfSharp.Benchmark; + +public class Program +{ + public static void Main(string[] args) + { + BenchmarkRunner.Run(); + } +} diff --git a/DbfSharp.Benchmark/TestData/dbase_f5.dbf b/DbfSharp.Benchmark/TestData/dbase_f5.dbf new file mode 100644 index 0000000..ed95dfa Binary files /dev/null and b/DbfSharp.Benchmark/TestData/dbase_f5.dbf differ diff --git a/DbfSharp.Benchmark/TestData/dbase_f5.fpt b/DbfSharp.Benchmark/TestData/dbase_f5.fpt new file mode 100644 index 0000000..bafff00 Binary files /dev/null and b/DbfSharp.Benchmark/TestData/dbase_f5.fpt differ diff --git a/DbfSharp.Benchmark/TestData/people.dbf b/DbfSharp.Benchmark/TestData/people.dbf new file mode 100644 index 0000000..8403393 Binary files /dev/null and b/DbfSharp.Benchmark/TestData/people.dbf differ diff --git a/DbfSharp.sln b/DbfSharp.sln index 65aeef8..b9a899a 100644 --- a/DbfSharp.sln +++ b/DbfSharp.sln @@ -1,5 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 12.00 +# Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbfSharp.Core", "DbfSharp.Core\DbfSharp.Core.csproj", "{A322E66C-94FB-48C6-8F5E-B7BF0AFEB535}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbfSharp.Tests", "DbfSharp.Tests\DbfSharp.Tests.csproj", "{B264B229-6A93-40A2-AA4A-2569FBC19DAB}" @@ -16,6 +17,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Files", "Solution EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbfSharp.ConsoleAot", "DbfSharp.ConsoleAot\DbfSharp.ConsoleAot.csproj", "{F19551C1-A962-44A8-8881-43B1DA991FBE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbfSharp.Benchmark", "DbfSharp.Benchmark\DbfSharp.Benchmark.csproj", "{F96DB459-9B06-4048-95E6-9C44B0DF82D6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -34,5 +37,9 @@ Global {F19551C1-A962-44A8-8881-43B1DA991FBE}.Debug|Any CPU.Build.0 = Debug|Any CPU {F19551C1-A962-44A8-8881-43B1DA991FBE}.Release|Any CPU.ActiveCfg = Release|Any CPU {F19551C1-A962-44A8-8881-43B1DA991FBE}.Release|Any CPU.Build.0 = Release|Any CPU + {F96DB459-9B06-4048-95E6-9C44B0DF82D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F96DB459-9B06-4048-95E6-9C44B0DF82D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F96DB459-9B06-4048-95E6-9C44B0DF82D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F96DB459-9B06-4048-95E6-9C44B0DF82D6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/processes.txt b/processes.txt new file mode 100644 index 0000000..965008e --- /dev/null +++ b/processes.txt @@ -0,0 +1,87 @@ +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.1 0.1 21124 12160 ? Ss 13:09 0:04 /usr/sbin/init +root 2 0.0 0.0 0 0 ? S 13:09 0:00 [kthreadd] +root 3 0.0 0.0 0 0 ? S 13:09 0:00 [pool_workqueue_release] +root 4 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-rcu_g] +root 5 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-rcu_p] +root 6 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-slub_] +root 7 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-netns] +root 9 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/0:0H-events_highpri] +root 10 0.0 0.0 0 0 ? I 13:09 0:00 [kworker/0:1-cgroup_destroy] +root 12 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-mm_pe] +root 13 0.0 0.0 0 0 ? I 13:09 0:00 [rcu_tasks_kthread] +root 14 0.0 0.0 0 0 ? I 13:09 0:00 [rcu_tasks_trace_kthread] +root 15 0.0 0.0 0 0 ? S 13:09 0:00 [ksoftirqd/0] +root 16 0.1 0.0 0 0 ? I 13:09 0:03 [rcu_preempt] +root 17 0.0 0.0 0 0 ? S 13:09 0:00 [migration/0] +root 18 0.0 0.0 0 0 ? S 13:09 0:00 [cpuhp/0] +root 19 0.0 0.0 0 0 ? S 13:09 0:00 [cpuhp/1] +root 20 0.0 0.0 0 0 ? S 13:09 0:01 [migration/1] +root 21 0.0 0.0 0 0 ? S 13:09 0:00 [ksoftirqd/1] +root 23 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/1:0H-kblockd] +root 24 0.0 0.0 0 0 ? S 13:09 0:00 [cpuhp/2] +root 25 0.0 0.0 0 0 ? S 13:09 0:01 [migration/2] +root 26 0.0 0.0 0 0 ? S 13:09 0:00 [ksoftirqd/2] +root 28 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/2:0H-kblockd] +root 29 0.0 0.0 0 0 ? S 13:09 0:00 [cpuhp/3] +root 30 0.0 0.0 0 0 ? S 13:09 0:01 [migration/3] +root 31 0.0 0.0 0 0 ? S 13:09 0:00 [ksoftirqd/3] +root 33 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/3:0H-kblockd] +root 34 0.0 0.0 0 0 ? S 13:09 0:00 [kdevtmpfs] +root 35 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-inet_] +root 36 0.0 0.0 0 0 ? S 13:09 0:00 [oom_reaper] +root 37 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-write] +root 38 0.0 0.0 0 0 ? S 13:09 0:00 [kcompactd0] +root 39 0.0 0.0 0 0 ? SN 13:09 0:00 [ksmd] +root 40 0.0 0.0 0 0 ? SN 13:09 0:00 [khugepaged] +root 41 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-crypt] +root 42 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-kbloc] +root 43 0.0 0.0 0 0 ? I 13:09 0:00 [kworker/1:1-events] +root 50 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/0:1H-kblockd] +root 74 0.0 0.0 0 0 ? S 13:09 0:00 [kswapd0] +root 84 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-kthro] +root 86 0.0 0.0 0 0 ? I 13:09 0:00 [kworker/3:2-events] +root 89 0.0 0.0 0 0 ? S 13:09 0:00 [irq/24-ACPI:Ged] +root 91 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-acpi_] +root 177 0.0 0.0 0 0 ? I 13:09 0:00 [kworker/1:2-events] +root 178 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-kstrp] +root 397 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/1:1H] +root 399 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/2:1H-kblockd] +root 401 0.0 0.0 0 0 ? S 13:09 0:00 [jbd2/vdb-8] +root 402 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/R-ext4-] +root 409 0.0 0.0 0 0 ? I< 13:09 0:00 [kworker/3:1H-kblockd] +root 427 0.0 0.2 50888 18048 ? S