{"id":17032970,"url":"https://github.com/tonyredondo/timeitsharp","last_synced_at":"2026-01-16T16:35:59.811Z","repository":{"id":65272050,"uuid":"588504684","full_name":"tonyredondo/timeitsharp","owner":"tonyredondo","description":"Command execution time meter","archived":false,"fork":false,"pushed_at":"2026-01-15T10:22:50.000Z","size":605,"stargazers_count":23,"open_issues_count":2,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-15T15:48:19.758Z","etag":null,"topics":["benchmark","benchmarking-framework","performance","performance-testing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonyredondo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2023-01-13T09:29:25.000Z","updated_at":"2026-01-15T10:20:07.000Z","dependencies_parsed_at":"2023-02-10T14:31:44.246Z","dependency_job_id":"886a9f9b-5527-4edb-ba14-c4d66bde6ec1","html_url":"https://github.com/tonyredondo/timeitsharp","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/tonyredondo/timeitsharp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyredondo%2Ftimeitsharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyredondo%2Ftimeitsharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyredondo%2Ftimeitsharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyredondo%2Ftimeitsharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonyredondo","download_url":"https://codeload.github.com/tonyredondo/timeitsharp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyredondo%2Ftimeitsharp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","benchmarking-framework","performance","performance-testing"],"created_at":"2024-10-14T08:31:21.970Z","updated_at":"2026-01-16T16:35:59.796Z","avatar_url":"https://github.com/tonyredondo.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TimeItSharp\n[![NuGet](https://img.shields.io/nuget/v/TimeItSharp.svg)](https://www.nuget.org/packages/TimeItSharp)\n[![.NET](https://github.com/tonyredondo/timeitsharp/actions/workflows/ci.yml/badge.svg)](https://github.com/tonyredondo/timeitsharp/actions/workflows/ci.yml)\n\nCommand execution time meter allows to configure multiple scenarios to run benchmarks over CLI apps, output are available in markdown and json.\n\n### Install\n```bash\ndotnet tool install --global TimeItSharp\n```\n\n### Usage\n```bash\ndotnet timeit [configuration file.json]\n```\n\nor\n\n```bash\ndotnet timeit -- \"[command]\"\n```\n\n```bash\n❯ dotnet timeit --help\nTimeItSharp v0.1.20\nDescription:\n\nUsage:\n  TimeItSharp \u003cconfiguration file or process name\u003e [options]\n\nArguments:\n  \u003cconfiguration file or process name\u003e  The JSON configuration file or process name\n\nOptions:\n  --variable \u003cvariable\u003e        Variables used to instantiate the configuration file [default: TimeItSharp.Common.TemplateVariables]\n  --count \u003ccount\u003e              Number of iterations to run\n  --warmup \u003cwarmup\u003e            Number of iterations to warm up\n  --metrics                    Enable Metrics from startup hook [default: True]\n  --json-exporter              Enable JSON exporter [default: False]\n  --datadog-exporter           Enable Datadog exporter [default: False]\n  --datadog-profiler           Enable Datadog profiler [default: False]\n  --first-run-stdout           Show the StdOut and StdErr for the first run [default: False]\n  --process-failed-executions  Include failed executions in the final results [default: False]\n  --debug                      Run timeit in debug mode [default: False]\n  --version                    Show version information\n  -?, -h, --help               Show help and usage information\n```\n\n\n#### Default Configuration when running a command\n```\nWarmup count = 1\nCount = 10\nExporters = ConsoleExporter\nAssertors = DefaultAssertor\n```\n\n## Sample Configuration\n\n```json\n{\n  \"enableDatadog\": true,\n  \"enableMetrics\": true,\n  \"warmUpCount\": 10,\n  \"count\": 100,\n  \"assertors\": [\n    {\n      \"name\": \"DefaultAssertor\"\n    }\n  ],\n  \"services\": [\n    {\n      \"name\": \"NoopService\"\n    },\n    {\n      \"name\": \"DatadogProfiler\",\n      \"options\": {\n        \"useExtraRun\": true,\n        \"extraRunCount\": 5,\n        \"scenarios\" : [ \"CallTarget\" ]\n      }\n    },\n    {\n      \"name\": \"Execute\",\n      \"options\": {\n        \"onScenarioStart\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** onScenarioStart ***\",\n          \"workingDirectory\": \"$(CWD)/\",\n          \"redirectStandardOutput\": true\n        },\n        \"onScenarioFinish\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** onScenarioFinish ***\",\n          \"workingDirectory\": \"$(CWD)/\",\n          \"redirectStandardOutput\": true\n        },\n        \"onExecutionStart\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** onExecutionStart ***\",\n          \"workingDirectory\": \"$(CWD)/\"\n        },\n        \"onExecutionEnd\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** onExecutionEnd ***\",\n          \"workingDirectory\": \"$(CWD)/\"\n        },\n        \"afterAllScenariosFinishes\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** afterAllScenariosFinishes ***\",\n          \"workingDirectory\": \"$(CWD)/\",\n          \"redirectStandardOutput\": true\n        },\n        \"onFinish\": {\n          \"processName\": \"echo\",\n          \"processArguments\": \"*** onFinish ***\",\n          \"workingDirectory\": \"$(CWD)/\",\n          \"redirectStandardOutput\": true\n        }\n      }\n    }\n  ],\n  \"scenarios\": [\n    {\n      \"name\": \"Callsite\",\n      \"isBaseline\": true,\n      \"environmentVariables\": {\n        \"DD_TRACE_CALLTARGET_ENABLED\": \"false\",\n        \"DD_CLR_ENABLE_INLINING\": \"false\"\n      }\n    },\n    {\n      \"name\": \"CallTarget\",\n      \"environmentVariables\": {\n        \"DD_TRACE_CALLTARGET_ENABLED\": \"true\",\n        \"DD_CLR_ENABLE_INLINING\": \"false\"\n      }\n    },\n    {\n      \"name\": \"CallTarget\\u002BInlining\",\n      \"environmentVariables\": {\n        \"DD_TRACE_CALLTARGET_ENABLED\": \"true\",\n        \"DD_CLR_ENABLE_INLINING\": \"true\"\n      }\n    }\n  ],\n  \"processName\": \"dotnet\",\n  \"processArguments\": \"--version\",\n  \"workingDirectory\": \"$(CWD)/\",\n  \"environmentVariables\": {\n    \"CORECLR_ENABLE_PROFILING\": \"1\",\n    \"CORECLR_PROFILER\": \"{846F5F1C-F9AE-4B07-969E-05C26BC060D8}\",\n    \"CORECLR_PROFILER_PATH\": \"/Datadog.Trace.ClrProfiler.Native.dylib\",\n    \"DD_DOTNET_TRACER_HOME\": \"/\",\n    \"DD_INTEGRATIONS\": \"/integrations.json\"\n  },\n  \"tags\": {\n    \"runtime.architecture\" : \"x86\",\n    \"runtime.name\" : \".NET Framework\",\n    \"runtime.version\" : \"4.6.1\",\n    \"benchmark.job.runtime.name\" : \".NET Framework 4.6.1\",\n    \"benchmark.job.runtime.moniker\" : \"net461\"\n  },\n  \"timeout\" : {\n    \"maxDuration\": 15,\n    \"processName\": \"dotnet-dump\",\n    \"processArguments\": \"collect --process-id %pid%\"\n  },\n  \"overheadThreshold\": 0.1\n}\n```\n\n## Sample output\n\n```bash\ndotnet timeit config-example.json\n\nTimeItSharp v0.4.0\nWarmup count: 10\nMax count: 100\nAcceptable relative width: 0,7%\nConfidence level: 95%\nMinimum error reduction: 0,1%\nMaximum duration: 45min\nOverhead threshold: 10%\nNumber of Scenarios: 3\nExporters: ConsoleExporter, JsonExporter, Datadog\nAssertors: DefaultAssertor\nServices: NoopService, DatadogProfiler, Execute\n\n*** onScenarioStart ***\nExecuteService.OnScenarioStart: ProcessId: 57272, ProcessName: echo, Duration: 00:00:00.0114420, ExitCode: 0\nScenario: Callsite\n  Cmd: dotnet --version\n  Warming up ..........\n    Duration: 1 sec 894 ms\n  Run ....................................................................................................\n    Duration: 17 sec 610 ms\n\n*** onScenarioFinish ***\nExecuteService.OnScenarioFinish: ProcessId: 57762, ProcessName: echo, Duration: 00:00:00.0029140, ExitCode: 0\n*** onScenarioStart ***\nExecuteService.OnScenarioStart: ProcessId: 57763, ProcessName: echo, Duration: 00:00:00.0021860, ExitCode: 0\nScenario: CallTarget\n  Cmd: dotnet --version\n  Warming up ..........\n    Duration: 1 sec 783 ms\n  Run ....................................................................................................\n    Duration: 17 sec 575 ms\n\n*** onScenarioFinish ***\nExecuteService.OnScenarioFinish: ProcessId: 58246, ProcessName: echo, Duration: 00:00:00.0023170, ExitCode: 0\n*** onScenarioStart ***\nExecuteService.OnScenarioStart: ProcessId: 58247, ProcessName: echo, Duration: 00:00:00.0061310, ExitCode: 0\nScenario: CallTarget+Inlining\n  Cmd: dotnet --version\n  Warming up ..........\n    Duration: 1 sec 777 ms\n  Run ......................................................................................\n    Acceptable relative width criteria met. Stopping iterations for this scenario.\n    N: 82\n    Mean: 82,05ms\n    Confidence Interval at 95: [81,764ms, 82,336ms]. Relative width: 0,6971%\n    Duration: 15 sec 141 ms\n\n*** onScenarioFinish ***\nExecuteService.OnScenarioFinish: ProcessId: 58713, ProcessName: echo, Duration: 00:00:00.0023110, ExitCode: 0\n*** afterAllScenariosFinishes ***\nExecuteService.AfterAllScenariosFinishes: ProcessId: 58714, ProcessName: echo, Duration: 00:00:00.0022520, ExitCode: 0\n### Results (last 10):\n                                               \n| Callsite | CallTarget | CallTarget+Inlining |\n| :------: | :--------: | :-----------------: |\n| 80,743ms |  83,044ms  |      80,732ms       |\n| 81,672ms |  81,522ms  |      82,712ms       |\n| 82,224ms |  80,891ms  |      81,288ms       |\n| 82,71ms  |  80,833ms  |      81,287ms       |\n| 82,256ms |  80,549ms  |       81,53ms       |\n| 83,502ms |  80,168ms  |       80,64ms       |\n| 82,368ms |  80,494ms  |      81,656ms       |\n| 82,076ms |  82,498ms  |      84,044ms       |\n| 81,51ms  |  83,453ms  |      81,702ms       |\n| 85,344ms |  81,94ms   |      81,283ms       |\n                                               \n### Outliers (last 5):\n                                               \n| Callsite | CallTarget | CallTarget+Inlining |\n| :------: | :--------: | :-----------------: |\n| 87,907ms |  87,308ms  |      87,211ms       |\n| 87,434ms |  90,669ms  |      84,566ms       |\n| 90,536ms |  89,403ms  |       88,14ms       |\n| 88,04ms  |  88,565ms  |      84,275ms       |\n| 90,688ms |  88,601ms  |       80,44ms       |\n                                               \n### Distribution:\n\n                            ┌ ██████████                               (5)\n       79,95ms - 80,53ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                     (10)\n                            └                                          (0)\n                            ┌ ██████████████                           (7)\n       80,53ms - 81,10ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒           (15)\n                            └ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ (20)\n                            ┌ ████████████████████████████████████     (18)\n       81,10ms - 81,68ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒         (16)\n                            └ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   (19)\n                            ┌ ██████████████████████████████████████   (19)\n       81,68ms - 82,25ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒       (17)\n                            └ ░░░░░░░░░░░░░░                           (7)\n                            ┌ ██████████████████████                   (11)\n       82,25ms - 82,83ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                         (8)\n                            └ ░░░░░░░░░░░░░░░░░░░░░░                   (11)\n                            ┌ ████████████                             (6)\n       82,83ms - 83,40ms    ┤ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                         (8)\n                            └ ░░░░░░░░                                 (4)\n                            ┌ ████████████                             (6)\n       83,40ms - 83,98ms    ┤ ▒▒▒▒▒▒                                   (3)\n                            └ ░░░░░░░░░░░░                             (6)\n                            ┌ ████████                                 (4)\n       83,98ms - 84,56ms    ┤ ▒▒▒▒▒▒▒▒                                 (4)\n                            └ ░░░░░░░░                                 (4)\n                            ┌ ████████                                 (4)\n       84,56ms - 85,13ms    ┤ ▒▒▒▒                                     (2)\n                            └                                          (0)\n                            ┌ ██████                                   (3)\n       85,13ms - 85,71ms    ┤ ▒▒▒▒                                     (2)\n                            └                                          (0)\n                            ┌ ██████                                   (3)\n       85,71ms - 86,28ms    ┤ ▒▒                                       (1)\n                            └                                          (0)\n  Legend:\n    █ : Callsite  Width: 6,14ms\n    ▒ : CallTarget  Width: 5,99ms\n    ░ : CallTarget+Inlining  Width: 3,53ms\n\n### Summary:\n                                                                                                                                                                       \n| Name                                        | Status | Mean     | StdDev  | StdErr  | Median   | C. Interval 100%     | C. Interval 95%      | Outliers | Overhead% |\n| ------------------------------------------- | ------ | -------- | ------- | ------- | -------- | -------------------- | -------------------- | -------- | --------- |\n| Callsite [N=100]                            | Passed | 82,47ms  | 1,468ms | 0,158ms | 82,132ms | [80,146 - 86,284] ms | [82,156 - 82,785] ms | 14 {1,2} | 0         |\n|   ├\u003eprocess.corrected_duration_ms           |        | 62.548   | 0.668   | 0.08    | 62.488   | [61.389 - 64.027]    | [62.387 - 62.708]    | 17 {1,2} |           |\n|   ├\u003eprocess.internal_duration_ms            |        | 31.943   | 0.356   | 0.042   | 31.846   | [31.437 - 32.768]    | [31.859 - 32.027]    | 11 {1,3} |           |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 19.63    | 0.228   | 0.027   | 19.558   | [19.251 - 20.173]    | [19.575 - 19.684]    | 13 {1,2} |           |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 1.672    | 0.097   | 0.012   | 1.646    | [1.552 - 1.888]      | [1.649 - 1.695]      | 13 {1,2} |           |\n|   ├\u003eprocess.time_to_end_ms                  |        | 1.625    | 0.086   | 0.01    | 1.597    | [1.51 - 1.812]       | [1.604 - 1.646]      | 16 {1,2} |           |\n|   ├\u003eprocess.time_to_main_ms                 |        | 48.572   | 0.588   | 0.07    | 48.523   | [47.605 - 49.766]    | [48.432 - 48.712]    | 14 {1,3} |           |\n|   ├\u003eprocess.time_to_start_ms                |        | 28.86    | 0.346   | 0.042   | 28.847   | [28.241 - 29.591]    | [28.777 - 28.943]    | 14 {1,4} |           |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 1.438    | 0.022   | 0.002   | 1.45     | [1.4 - 1.45]         | [1.433 - 1.443]      | 13 {1,6} |           |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 214.504  | 2.241   | 0.27    | 214.61   | [210.67 - 220.345]   | [213.966 - 215.043]  | 15 {1,3} |           |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 43.752   | 1.186   | 0.143   | 43.685   | [41.745 - 46.065]    | [43.467 - 44.037]    | 13 {1,4} |           |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.count            |        | 13.5     | 0       | 0       | 13.5     | 13.5                 | 13.5                 | 0        |           |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.process.private_bytes           |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   └\u003eruntime.process.processor_time          |        | 170.794  | 1.839   | 0.223   | 170.202  | [168.41 - 175.15]    | [170.349 - 171.24]   | 15 {1,1} |           |\n|                                             |        |          |         |         |          |                      |                      |          |           |\n| CallTarget [N=100]                          | Passed | 81,959ms | 1,328ms | 0,143ms | 81,799ms | [79,95 - 85,938] ms  | [81,674 - 82,244] ms | 14 {0,8} | -0,62     |\n|   ├\u003eprocess.corrected_duration_ms           |        | 62.074   | 0.669   | 0.079   | 62.006   | [61.038 - 63.369]    | [61.916 - 62.232]    | 13 {1,3} |           |\n|   ├\u003eprocess.internal_duration_ms            |        | 31.74    | 0.286   | 0.034   | 31.744   | [31.334 - 32.358]    | [31.671 - 31.808]    | 14 {1,1} |           |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 19.476   | 0.202   | 0.023   | 19.456   | [19.149 - 19.968]    | [19.43 - 19.523]     | 9 {1,3}  |           |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 1.606    | 0.077   | 0.009   | 1.595    | [1.5 - 1.798]        | [1.589 - 1.624]      | 14 {1,2} |           |\n|   ├\u003eprocess.time_to_end_ms                  |        | 1.556    | 0.064   | 0.007   | 1.551    | [1.456 - 1.726]      | [1.541 - 1.571]      | 16 {1,3} |           |\n|   ├\u003eprocess.time_to_main_ms                 |        | 48.287   | 0.492   | 0.06    | 48.202   | [47.569 - 49.378]    | [48.168 - 48.407]    | 15 {1,2} |           |\n|   ├\u003eprocess.time_to_start_ms                |        | 28.736   | 0.353   | 0.043   | 28.629   | [28.216 - 29.533]    | [28.651 - 28.821]    | 15 {1,2} |           |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 1.432    | 0.024   | 0.003   | 1.45     | [1.4 - 1.45]         | [1.426 - 1.437]      | 0        |           |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 213.236  | 1.684   | 0.204   | 213.312  | [210.22 - 216.59]    | [212.828 - 213.643]  | 14 {1,2} |           |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 43.828   | 0.963   | 0.117   | 43.85    | [42.2 - 45.595]      | [43.595 - 44.061]    | 14 {1,3} |           |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.count            |        | 13.5     | 0       | 0       | 13.5     | 13.5                 | 13.5                 | 0        |           |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.process.private_bytes           |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   └\u003eruntime.process.processor_time          |        | 169.708  | 0.652   | 0.081   | 169.645  | [168.515 - 171.07]   | [169.546 - 169.869]  | 16 {1,1} |           |\n|                                             |        |          |         |         |          |                      |                      |          |           |\n| CallTarget+Inlining [N=86]                  | Passed | 81,885ms | 1,036ms | 0,123ms | 81,469ms | [80,58 - 84,112] ms  | [81,64 - 82,131] ms  | 15 {1}   | -0,71     |\n|   ├\u003eprocess.corrected_duration_ms           |        | 62.113   | 0.636   | 0.083   | 61.988   | [61.226 - 63.45]     | [61.945 - 62.28]     | 13 {1,3} |           |\n|   ├\u003eprocess.internal_duration_ms            |        | 31.702   | 0.272   | 0.035   | 31.642   | [31.334 - 32.256]    | [31.632 - 31.773]    | 10 {1,2} |           |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 19.602   | 0.223   | 0.029   | 19.661   | [19.251 - 19.968]    | [19.545 - 19.659]    | 10 {1,4} |           |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 1.649    | 0.088   | 0.011   | 1.646    | [1.519 - 1.816]      | [1.628 - 1.671]      | 14 {1,3} |           |\n|   ├\u003eprocess.time_to_end_ms                  |        | 1.603    | 0.073   | 0.009   | 1.577    | [1.503 - 1.736]      | [1.584 - 1.622]      | 12 {1,3} |           |\n|   ├\u003eprocess.time_to_main_ms                 |        | 48.141   | 0.403   | 0.052   | 48.082   | [47.563 - 48.937]    | [48.036 - 48.246]    | 13 {1,3} |           |\n|   ├\u003eprocess.time_to_start_ms                |        | 28.714   | 0.286   | 0.036   | 28.682   | [28.278 - 29.299]    | [28.641 - 28.787]    | 12 {1,4} |           |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 1.435    | 0.023   | 0.003   | 1.45     | [1.4 - 1.45]         | [1.43 - 1.44]        | 0        |           |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 213.373  | 1.659   | 0.222   | 212.89   | [211.095 - 217.195]  | [212.929 - 213.818]  | 13 {1,2} |           |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 43.294   | 0.753   | 0.098   | 43.215   | [41.92 - 44.865]     | [43.098 - 43.491]    | 12 {1,5} |           |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.dotnet.threads.count            |        | 13.5     | 0       | 0       | 13.5     | 13.5                 | 13.5                 | 0        |           |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   ├\u003eruntime.process.private_bytes           |        | 0        | 0       | 0       | 0        | 0                    | 0                    | 0        |           |\n|   └\u003eruntime.process.processor_time          |        | 169.958  | 1.423   | 0.189   | 169.49   | [168.215 - 173.645]  | [169.581 - 170.336]  | 13 {1,2} |           |\n                                                                                                                                                                       \n\n### Overheads:\n                                                                                 \n|                     | Callsite       | CallTarget       | CallTarget+Inlining |\n| ------------------- | -------------- | ---------------- | ------------------- |\n| Callsite            | --             | -0.6% (-0,511ms) | -0.7% (-0,585ms)    |\n| CallTarget          | 0.6% (0,511ms) | --               | -0.1% (-0,074ms)    |\n| CallTarget+Inlining | 0.7% (0,585ms) | 0.1% (0,074ms)   | --                  |\n                                                                                 \n\nThe json file '/Users/tony.redondo/repos/github/tonyredondo/timeitsharp/src/TimeItSharp/bin/Release/net9.0/jsonexporter_991684479.json' was exported.\nThe Datadog exported ran successfully.\nThe Datadog profiler could not be attached to the .NET processes.\n*** onFinish ***\nExecuteService.OnFinish: ProcessId: 58728, ProcessName: echo, Duration: 00:00:00.0022280, ExitCode: 0\n```\n\n## Output is markdown compatible\n\nExample:\n\n### Results:\n\n|  Callsite  | CallTarget | CallTarget+Inlining |\n| :--------: | :--------: | :-----------------: |\n| 118,073ms  | 118,3071ms |     118,1759ms      |\n| 119,1395ms | 120,4868ms |     119,1315ms      |\n| 118,8491ms | 118,7805ms |     117,4429ms      |\n| 119,4459ms | 118,166ms  |     116,6845ms      |\n| 117,9159ms | 117,501ms  |     118,9928ms      |\n| 118,4678ms | 119,4761ms |     120,3463ms      |\n| 118,9661ms | 117,7897ms |     117,4329ms      |\n| 119,121ms  | 118,5463ms |     120,0743ms      |\n...\n\n### Outliers:\n\n|  Callsite  | CallTarget | CallTarget+Inlining |\n| :--------: | :--------: | :-----------------: |\n| 117,3012ms | 127,412ms  |     123,7949ms      |\n| 117,4366ms | 129,8414ms |     129,5164ms      |\n| 125,8246ms | 127,7837ms |     123,7299ms      |\n| 120,6458ms | 127,9238ms |      128,343ms      |\n| 126,3406ms | 128,2422ms |     128,1666ms      |\n| 116,7321ms | 127,0036ms |     123,8186ms      |\n| 123,4536ms | 127,7425ms |     124,5007ms      |\n| 116,7023ms | 128,9796ms |      123,748ms      |\n| 117,0362ms | 128,5864ms |     116,0693ms      |\n| 121,2303ms | 131,3119ms |          -          |\n| 122,5626ms | 139,5261ms |          -          |\n| 117,1463ms | 132,8303ms |          -          |\n\n### Summary:\n\n| Name                                        | Status | Mean           | StdDev       | StdErr      | Min        | Median     | Max        | P95        | P90            | Outliers |\n| ------------------------------------------- | ------ | -------------- | ------------ | ----------- | ---------- | ---------- | ---------- | ---------- | -------------- | -------- |\n| Callsite                                    | Passed | 118,8135ms     | 0,7095ms     | 0,0778ms    | 117,5719ms | 118,7429ms | 120,4548ms | 120,0555ms | 119,8079ms     | 17 {1}   |\n|   ├\u003eprocess.corrected_duration_ms           |        | 86,140113      | 0,430977     | 0,052652    | 85,3643    | 86,1444    | 86,9631    | 86,87197   | 86,763167      | 16 {1,4} |\n|   ├\u003eprocess.internal_duration_ms            |        | 40,153966      | 0,256768     | 0,03069     | 39,7312    | 40,1408    | 40,5504    | 40,5504    | 40,512853      | 12 {1,3} |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 32,634311      | 0,294505     | 0,034708    | 32,1536    | 32,6656    | 33,0752    | 33,0752    | 33,0752        | 9 {1,4}  |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 5,358497       | 0,078895     | 0,009498    | 5,2202     | 5,3753     | 5,5074     | 5,47168    | 5,454627       | 15 {1,4} |\n|   ├\u003eprocess.time_to_end_ms                  |        | 5,267668       | 0,073456     | 0,008843    | 5,1305     | 5,2769     | 5,405      | 5,38568    | 5,360673       | 15 {1,4} |\n|   ├\u003eprocess.time_to_main_ms                 |        | 73,25671       | 0,433434     | 0,051805    | 72,5972    | 73,203     | 74,0836    | 74,04103   | 73,92514       | 12 {1,4} |\n|   ├\u003eprocess.time_to_start_ms                |        | 40,630537      | 0,321633     | 0,038442    | 40,134     | 40,61995   | 41,2627    | 41,20579   | 41,082703      | 15 {1,4} |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 0,508929       | 0,179719     | 0,019609    | 0,25       | 0,5        | 0,75       | 0,75       | 0,75           | 0        |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 312,5          | 0            | 0           | 312,5      | 312,5      | 312,5      | 312,5      | 312,5          | 18 {0,5} |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 150,173611     | 61,11054     | 6,441617    | 78,125     | 156,25     | 234,375    | 234,375    | 234,375        | 0        |\n|   ├\u003eruntime.dotnet.exceptions.count         |        | 1              | 0            | 0           | 1          | 1          | 1          | 1          | 1              | 0        |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 6936606,567164 | 31066,602999 | 3795,389626 | 6893568    | 6930432    | 7012352    | 6998425,6  | 6987502,933333 | 14 {1,3} |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.count            |        | 10             | 0            | 0           | 10         | 10         | 10         | 10         | 10             | 0        |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.process.private_bytes           |        | 6936606,567164 | 31066,602999 | 3795,389626 | 6893568    | 6930432    | 7012352    | 6998425,6  | 6987502,933333 | 14 {1,3} |\n|   └\u003eruntime.process.processor_time          |        | 159,040179     | 56,162117    | 6,127789    | 78,125     | 156,25     | 234,375    | 234,375    | 234,375        | 0        |\n| CallTarget                                  | Passed | 120,0507ms     | 2,3859ms     | 0,2634ms    | 117,2969ms | 119,2402ms | 126,859ms  | 125,6954ms | 124,1969ms     | 18 {0,8} |\n|   ├\u003eprocess.corrected_duration_ms           |        | 86,764442      | 1,093408     | 0,128859    | 85,1422    | 86,5402    | 89,7589    | 88,721445  | 88,428037      | 13 {1,2} |\n|   ├\u003eprocess.internal_duration_ms            |        | 40,45907       | 0,647982     | 0,075326    | 39,5264    | 40,2432    | 42,0864    | 41,97888   | 41,495893      | 18 {1,2} |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 32,677472      | 0,498738     | 0,060041    | 31,9488    | 32,5632    | 33,792     | 33,5872    | 33,3824        | 16 {1,2} |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 5,499259       | 0,136163     | 0,016512    | 5,283      | 5,47615    | 5,7631     | 5,741525   | 5,697067       | 16 {1,4} |\n|   ├\u003eprocess.time_to_end_ms                  |        | 5,449672       | 0,139421     | 0,016907    | 5,2332     | 5,4293     | 5,6888     | 5,677275   | 5,6505         | 16 {1,3} |\n|   ├\u003eprocess.time_to_main_ms                 |        | 73,445909      | 0,771463     | 0,094961    | 72,1542    | 73,2993    | 75,4407    | 75,0731    | 74,613523      | 15 {1,2} |\n|   ├\u003eprocess.time_to_start_ms                |        | 40,996214      | 0,606089     | 0,07193     | 40,0737    | 40,9266    | 42,4239    | 42,32766   | 41,984373      | 11 {1,3} |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 0,567269       | 0,177712     | 0,019506    | 0,25       | 0,5        | 0,75       | 0,75       | 0,75           | 11 {1,7} |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 331,965488     | 33,758662    | 3,392873    | 312,5      | 312,5      | 390,625    | 390,625    | 390,625        | 0        |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 142,405063     | 60,978441    | 6,860611    | 78,125     | 156,25     | 234,375    | 234,375    | 234,375        | 15 {1,5} |\n|   ├\u003eruntime.dotnet.exceptions.count         |        | 1              | 0            | 0           | 1          | 1          | 1          | 1          | 1              | 0        |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 6997926,956522 | 26336,175466 | 3170,502951 | 6955008    | 6995968    | 7077888    | 7059865,6  | 7024640        | 16 {1,3} |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.count            |        | 10             | 0            | 0           | 10         | 10         | 10         | 10         | 10             | 0        |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.process.private_bytes           |        | 6997926,956522 | 26336,175466 | 3170,502951 | 6955008    | 6995968    | 7077888    | 7059865,6  | 7024640        | 16 {1,3} |\n|   └\u003eruntime.process.processor_time          |        | 177,271586     | 55,535049    | 6,095764    | 78,125     | 156,25     | 234,375    | 234,375    | 234,375        | 11 {1,7} |\n| CallTarget+Inlining                         | Passed | 118,8732ms     | 1,1761ms     | 0,1232ms    | 116,6634ms | 118,8689ms | 122,2661ms | 120,8293ms | 120,3355ms     | 9 {1,3}  |\n|   ├\u003eprocess.corrected_duration_ms           |        | 86,347194      | 0,467871     | 0,05716     | 85,524     | 86,2929    | 87,3735    | 87,11181   | 86,977693      | 15 {1,4} |\n|   ├\u003eprocess.internal_duration_ms            |        | 40,042789      | 0,293506     | 0,035081    | 39,5264    | 40,0896    | 40,5504    | 40,448     | 40,448         | 17 {1,3} |\n|   ├\u003eprocess.startuphook_overhead_ms         |        | 32,494424      | 0,341204     | 0,041685    | 31,9488    | 32,4608    | 33,0752    | 33,0752    | 32,9728        | 16 {1,3} |\n|   ├\u003eprocess.time_to_end_main_ms             |        | 5,389477       | 0,094331     | 0,011195    | 5,2274     | 5,368      | 5,5813     | 5,55762    | 5,534767       | 13 {1,4} |\n|   ├\u003eprocess.time_to_end_ms                  |        | 5,323987       | 0,09187      | 0,010903    | 5,1824     | 5,3195     | 5,5054     | 5,47832    | 5,457473       | 13 {1,3} |\n|   ├\u003eprocess.time_to_main_ms                 |        | 73,50064       | 0,483363     | 0,059052    | 72,6678    | 73,4763    | 74,4952    | 74,30069   | 74,158827      | 16 {1,3} |\n|   ├\u003eprocess.time_to_start_ms                |        | 40,921329      | 0,375977     | 0,045262    | 40,3084    | 40,9231    | 41,6448    | 41,54568   | 41,449407      | 13 {1,4} |\n|   ├\u003eruntime.dotnet.cpu.percent              |        | 0,62234        | 0,225238     | 0,023232    | 0,25       | 0,5        | 1          | 1          | 1              | 0        |\n|   ├\u003eruntime.dotnet.cpu.system               |        | 312,5          | 0            | 0           | 312,5      | 312,5      | 312,5      | 312,5      | 312,5          | 18 {0,5} |\n|   ├\u003eruntime.dotnet.cpu.user                 |        | 119,298986     | 39,271643    | 4,565236    | 78,125     | 156,25     | 156,25     | 156,25     | 156,25         | 13 {1,1} |\n|   ├\u003eruntime.dotnet.exceptions.count         |        | 1              | 0            | 0           | 1          | 1          | 1          | 1          | 1              | 0        |\n|   ├\u003eruntime.dotnet.mem.committed            |        | 7087392,820513 | 47001,516683 | 5321,873791 | 7020544    | 7077888    | 7180288    | 7176192    | 7171413,333333 | 12 {1,4} |\n|   ├\u003eruntime.dotnet.threads.contention_count |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.contention_time  |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.dotnet.threads.count            |        | 10             | 0            | 0           | 10         | 10         | 10         | 10         | 10             | 0        |\n|   ├\u003eruntime.dotnet.threads.workers_count    |        | 0              | 0            | 0           | 0          | 0          | 0          | 0          | 0              | 0        |\n|   ├\u003eruntime.process.private_bytes           |        | 7087392,820513 | 47001,516683 | 5321,873791 | 7020544    | 7077888    | 7180288    | 7176192    | 7171413,333333 | 12 {1,4} |\n|   └\u003eruntime.process.processor_time          |        | 194,481383     | 70,386834    | 7,259848    | 78,125     | 156,25     | 312,5      | 312,5      | 312,5          | 0        |\n\n\n### Overheads:\n\n|                     | Callsite | CallTarget | CallTarget+Inlining |\n| ------------------- | -------- | ---------- | ------------------- |\n| Callsite            | --       | 1%         | 0.1%                |\n| CallTarget          | -1%      | --         | -1%                 |\n| CallTarget+Inlining | -0.1%    | 1%         | --                  |\n\n## Datadog Exporter\n\nThe datadog exporter send all the data using the CI Test Visibility public api:\n\n### Benchmark data\n\u003cimg width=\"1519\" alt=\"image\" src=\"https://user-images.githubusercontent.com/69803/223069595-c6531c45-2085-4fbc-8d4f-79854c0ca58d.png\"\u003e\n\n### Metrics from the startup hook\n\u003cimg width=\"818\" alt=\"image\" src=\"https://user-images.githubusercontent.com/69803/223069816-c3caf562-1cd2-46d3-8803-f42c6679647e.png\"\u003e\n\n\n\n## Datadog Profiler Service\n\nThe datadog profiler service injects the datadog profiler to the target .NET process\n\n![image](https://github.com/tonyredondo/timeitsharp/assets/69803/757e9dad-9418-40f5-9fc6-d0e0881c08f6)\n\n![image](https://github.com/tonyredondo/timeitsharp/assets/69803/b4b48267-c7f0-4e63-a4dd-a1a17f5c0f60)\n\n![image](https://github.com/tonyredondo/timeitsharp/assets/69803/d54dbe17-bc89-4fd4-b985-79449ae62f29)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyredondo%2Ftimeitsharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonyredondo%2Ftimeitsharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyredondo%2Ftimeitsharp/lists"}