You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PolyglotNotebooksStudy/Docs/多语言笔记.8.1.运行Benchmark基准测试.i...

550 lines
27 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"运行 BenchmarkDotnet 基准测试\n",
"============================"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在多语言笔记中,可以很方便的使用 BenchmarkDotnet 进行基准测试。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 使用步骤"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. 安装 BenchmarkDotNet 包"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div><div><strong>Restore sources</strong><ul><li><span>https://api.nuget.org/v3/index.json</span></li></ul></div><div></div><div><strong>Installed Packages</strong><ul><li><span>BenchmarkDotNet, 0.13.12</span></li></ul></div></div>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"// 默认包源\n",
"#i \"nuget:https://api.nuget.org/v3/index.json\"\n",
"\n",
"#r \"nuget: BenchmarkDotNet, 0.13.12\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.编写基准测试类"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"定义包含 [Benchmark] 属性的测试方法"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"polyglot_notebook": {
"kernelName": "csharp"
}
},
"outputs": [],
"source": [
"using BenchmarkDotNet.Attributes;\n",
"using BenchmarkDotNet.Running;\n",
"\n",
"public class MyBenchmarks\n",
"{\n",
" [Benchmark]\n",
" public void TestMethod()\n",
" {\n",
" // 待测试的性能代码\n",
" }\n",
"}\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. 运行基准测试"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在笔记中调用 BenchmarkRunner需显式指定配置如 Release 模式):"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"polyglot_notebook": {
"kernelName": "csharp"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b]9;4;3;0\u001b\\// Validating benchmarks:\n",
"// * No exporters defined, results will not be persisted.\n",
"\n",
"// ***** BenchmarkRunner: Start *****\n",
"// ***** Found 1 benchmark(s) in total *****\n",
"// ***** Building 1 exe(s) in Parallel: Start *****\n",
"// ***** Done, took 00:00:00 (0 sec) *****\n",
"// Found 1 benchmarks:\n",
"// MyBenchmarks.TestMethod: Job-LIUZPN(Toolchain=InProcessEmitToolchain)\n",
"\n",
"Setup power plan (GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c FriendlyName: 高性能)\n",
"// **************************\n",
"// Benchmark: MyBenchmarks.TestMethod: Job-LIUZPN(Toolchain=InProcessEmitToolchain)\n",
"// *** Execute ***\n",
"// Launch: 1 / 1\n",
"\n",
"// Benchmark Process Environment Information:\n",
"// BenchmarkDotNet v0.13.12\n",
"// Runtime=.NET 9.0.4 (9.0.425.16305), X64 RyuJIT AVX2\n",
"// GC=Concurrent Server\n",
"// HardwareIntrinsics=AVX2,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256\n",
"// Job: Job-LIUZPN(Toolchain=InProcessEmitToolchain)\n",
"\n",
"OverheadJitting 1: 1 op, 381100.00 ns, 381.1000 us/op\n",
"WorkloadJitting 1: 1 op, 531000.00 ns, 531.0000 us/op\n",
"\n",
"OverheadJitting 2: 16 op, 483900.00 ns, 30.2437 us/op\n",
"WorkloadJitting 2: 16 op, 985900.00 ns, 61.6187 us/op\n",
"\n",
"WorkloadPilot 1: 16 op, 14400.00 ns, 900.0000 ns/op\n",
"WorkloadPilot 2: 32 op, 6000.00 ns, 187.5000 ns/op\n",
"WorkloadPilot 3: 64 op, 5900.00 ns, 92.1875 ns/op\n",
"WorkloadPilot 4: 128 op, 2600.00 ns, 20.3125 ns/op\n",
"WorkloadPilot 5: 256 op, 3500.00 ns, 13.6719 ns/op\n",
"WorkloadPilot 6: 512 op, 7300.00 ns, 14.2578 ns/op\n",
"WorkloadPilot 7: 1024 op, 11300.00 ns, 11.0352 ns/op\n",
"WorkloadPilot 8: 2048 op, 20900.00 ns, 10.2051 ns/op\n",
"WorkloadPilot 9: 4096 op, 25200.00 ns, 6.1523 ns/op\n",
"WorkloadPilot 10: 8192 op, 38900.00 ns, 4.7485 ns/op\n",
"WorkloadPilot 11: 16384 op, 99500.00 ns, 6.0730 ns/op\n",
"WorkloadPilot 12: 32768 op, 203900.00 ns, 6.2225 ns/op\n",
"WorkloadPilot 13: 65536 op, 284400.00 ns, 4.3396 ns/op\n",
"WorkloadPilot 14: 131072 op, 503100.00 ns, 3.8383 ns/op\n",
"WorkloadPilot 15: 262144 op, 1037600.00 ns, 3.9581 ns/op\n",
"WorkloadPilot 16: 524288 op, 2141100.00 ns, 4.0838 ns/op\n",
"WorkloadPilot 17: 1048576 op, 5614900.00 ns, 5.3548 ns/op\n",
"WorkloadPilot 18: 2097152 op, 9530900.00 ns, 4.5447 ns/op\n",
"WorkloadPilot 19: 4194304 op, 16251500.00 ns, 3.8747 ns/op\n",
"WorkloadPilot 20: 8388608 op, 31093100.00 ns, 3.7066 ns/op\n",
"WorkloadPilot 21: 16777216 op, 69916600.00 ns, 4.1674 ns/op\n",
"WorkloadPilot 22: 33554432 op, 104092200.00 ns, 3.1022 ns/op\n",
"WorkloadPilot 23: 67108864 op, 204056800.00 ns, 3.0407 ns/op\n",
"WorkloadPilot 24: 134217728 op, 416212900.00 ns, 3.1010 ns/op\n",
"WorkloadPilot 25: 268435456 op, 862297500.00 ns, 3.2123 ns/op\n",
"\n",
"OverheadWarmup 1: 268435456 op, 471566400.00 ns, 1.7567 ns/op\n",
"OverheadWarmup 2: 268435456 op, 466552400.00 ns, 1.7380 ns/op\n",
"OverheadWarmup 3: 268435456 op, 576908400.00 ns, 2.1492 ns/op\n",
"OverheadWarmup 4: 268435456 op, 608361000.00 ns, 2.2663 ns/op\n",
"OverheadWarmup 5: 268435456 op, 696230600.00 ns, 2.5937 ns/op\n",
"OverheadWarmup 6: 268435456 op, 567256700.00 ns, 2.1132 ns/op\n",
"OverheadWarmup 7: 268435456 op, 554610300.00 ns, 2.0661 ns/op\n",
"OverheadWarmup 8: 268435456 op, 582468400.00 ns, 2.1699 ns/op\n",
"OverheadWarmup 9: 268435456 op, 528403500.00 ns, 1.9685 ns/op\n",
"\n",
"OverheadActual 1: 268435456 op, 677908400.00 ns, 2.5254 ns/op\n",
"OverheadActual 2: 268435456 op, 593884600.00 ns, 2.2124 ns/op\n",
"OverheadActual 3: 268435456 op, 552982700.00 ns, 2.0600 ns/op\n",
"OverheadActual 4: 268435456 op, 593728300.00 ns, 2.2118 ns/op\n",
"OverheadActual 5: 268435456 op, 540111500.00 ns, 2.0121 ns/op\n",
"OverheadActual 6: 268435456 op, 477180500.00 ns, 1.7776 ns/op\n",
"OverheadActual 7: 268435456 op, 479161100.00 ns, 1.7850 ns/op\n",
"OverheadActual 8: 268435456 op, 531079500.00 ns, 1.9784 ns/op\n",
"OverheadActual 9: 268435456 op, 492533500.00 ns, 1.8348 ns/op\n",
"OverheadActual 10: 268435456 op, 540470700.00 ns, 2.0134 ns/op\n",
"OverheadActual 11: 268435456 op, 768091200.00 ns, 2.8614 ns/op\n",
"OverheadActual 12: 268435456 op, 500270800.00 ns, 1.8637 ns/op\n",
"OverheadActual 13: 268435456 op, 498249700.00 ns, 1.8561 ns/op\n",
"OverheadActual 14: 268435456 op, 567981300.00 ns, 2.1159 ns/op\n",
"OverheadActual 15: 268435456 op, 531957100.00 ns, 1.9817 ns/op\n",
"OverheadActual 16: 268435456 op, 563283000.00 ns, 2.0984 ns/op\n",
"OverheadActual 17: 268435456 op, 569417600.00 ns, 2.1212 ns/op\n",
"OverheadActual 18: 268435456 op, 546393200.00 ns, 2.0355 ns/op\n",
"OverheadActual 19: 268435456 op, 476632100.00 ns, 1.7756 ns/op\n",
"OverheadActual 20: 268435456 op, 532101400.00 ns, 1.9822 ns/op\n",
"\n",
"WorkloadWarmup 1: 268435456 op, 733488300.00 ns, 2.7325 ns/op\n",
"WorkloadWarmup 2: 268435456 op, 759722600.00 ns, 2.8302 ns/op\n",
"WorkloadWarmup 3: 268435456 op, 749575500.00 ns, 2.7924 ns/op\n",
"WorkloadWarmup 4: 268435456 op, 725301100.00 ns, 2.7020 ns/op\n",
"WorkloadWarmup 5: 268435456 op, 745114600.00 ns, 2.7758 ns/op\n",
"WorkloadWarmup 6: 268435456 op, 848129700.00 ns, 3.1595 ns/op\n",
"WorkloadWarmup 7: 268435456 op, 759963400.00 ns, 2.8311 ns/op\n",
"\n",
"WorkloadActual 1: 268435456 op, 700981100.00 ns, 2.6114 ns/op\n",
"WorkloadActual 2: 268435456 op, 871329600.00 ns, 3.2460 ns/op\n",
"WorkloadActual 3: 268435456 op, 685167900.00 ns, 2.5524 ns/op\n",
"WorkloadActual 4: 268435456 op, 715374000.00 ns, 2.6650 ns/op\n",
"WorkloadActual 5: 268435456 op, 652972400.00 ns, 2.4325 ns/op\n",
"WorkloadActual 6: 268435456 op, 679481300.00 ns, 2.5313 ns/op\n",
"WorkloadActual 7: 268435456 op, 639918800.00 ns, 2.3839 ns/op\n",
"WorkloadActual 8: 268435456 op, 664201000.00 ns, 2.4743 ns/op\n",
"WorkloadActual 9: 268435456 op, 730607000.00 ns, 2.7217 ns/op\n",
"WorkloadActual 10: 268435456 op, 793689100.00 ns, 2.9567 ns/op\n",
"WorkloadActual 11: 268435456 op, 673956500.00 ns, 2.5107 ns/op\n",
"WorkloadActual 12: 268435456 op, 695907000.00 ns, 2.5925 ns/op\n",
"WorkloadActual 13: 268435456 op, 690626300.00 ns, 2.5728 ns/op\n",
"WorkloadActual 14: 268435456 op, 638296000.00 ns, 2.3778 ns/op\n",
"WorkloadActual 15: 268435456 op, 663132100.00 ns, 2.4704 ns/op\n",
"WorkloadActual 16: 268435456 op, 696899000.00 ns, 2.5962 ns/op\n",
"WorkloadActual 17: 268435456 op, 764926400.00 ns, 2.8496 ns/op\n",
"WorkloadActual 18: 268435456 op, 787455000.00 ns, 2.9335 ns/op\n",
"WorkloadActual 19: 268435456 op, 692160800.00 ns, 2.5785 ns/op\n",
"WorkloadActual 20: 268435456 op, 718761200.00 ns, 2.6776 ns/op\n",
"WorkloadActual 21: 268435456 op, 724229300.00 ns, 2.6980 ns/op\n",
"WorkloadActual 22: 268435456 op, 640115300.00 ns, 2.3846 ns/op\n",
"WorkloadActual 23: 268435456 op, 666321500.00 ns, 2.4822 ns/op\n",
"WorkloadActual 24: 268435456 op, 1011237500.00 ns, 3.7672 ns/op\n",
"WorkloadActual 25: 268435456 op, 802223500.00 ns, 2.9885 ns/op\n",
"WorkloadActual 26: 268435456 op, 722083600.00 ns, 2.6900 ns/op\n",
"WorkloadActual 27: 268435456 op, 810133100.00 ns, 3.0180 ns/op\n",
"WorkloadActual 28: 268435456 op, 756040100.00 ns, 2.8165 ns/op\n",
"WorkloadActual 29: 268435456 op, 994470200.00 ns, 3.7047 ns/op\n",
"WorkloadActual 30: 268435456 op, 861272600.00 ns, 3.2085 ns/op\n",
"WorkloadActual 31: 268435456 op, 754507000.00 ns, 2.8108 ns/op\n",
"WorkloadActual 32: 268435456 op, 809822400.00 ns, 3.0168 ns/op\n",
"WorkloadActual 33: 268435456 op, 717488700.00 ns, 2.6729 ns/op\n",
"WorkloadActual 34: 268435456 op, 855054700.00 ns, 3.1853 ns/op\n",
"WorkloadActual 35: 268435456 op, 718882900.00 ns, 2.6780 ns/op\n",
"WorkloadActual 36: 268435456 op, 776371300.00 ns, 2.8922 ns/op\n",
"WorkloadActual 37: 268435456 op, 712470600.00 ns, 2.6542 ns/op\n",
"WorkloadActual 38: 268435456 op, 684294800.00 ns, 2.5492 ns/op\n",
"WorkloadActual 39: 268435456 op, 762930600.00 ns, 2.8421 ns/op\n",
"WorkloadActual 40: 268435456 op, 827339400.00 ns, 3.0821 ns/op\n",
"WorkloadActual 41: 268435456 op, 730217300.00 ns, 2.7203 ns/op\n",
"WorkloadActual 42: 268435456 op, 786903100.00 ns, 2.9314 ns/op\n",
"WorkloadActual 43: 268435456 op, 791861300.00 ns, 2.9499 ns/op\n",
"WorkloadActual 44: 268435456 op, 734407200.00 ns, 2.7359 ns/op\n",
"WorkloadActual 45: 268435456 op, 715738500.00 ns, 2.6663 ns/op\n",
"WorkloadActual 46: 268435456 op, 645804200.00 ns, 2.4058 ns/op\n",
"WorkloadActual 47: 268435456 op, 746088000.00 ns, 2.7794 ns/op\n",
"WorkloadActual 48: 268435456 op, 798878600.00 ns, 2.9761 ns/op\n",
"WorkloadActual 49: 268435456 op, 841277200.00 ns, 3.1340 ns/op\n",
"WorkloadActual 50: 268435456 op, 767504500.00 ns, 2.8592 ns/op\n",
"WorkloadActual 51: 268435456 op, 670642300.00 ns, 2.4983 ns/op\n",
"WorkloadActual 52: 268435456 op, 734972200.00 ns, 2.7380 ns/op\n",
"WorkloadActual 53: 268435456 op, 734025600.00 ns, 2.7345 ns/op\n",
"WorkloadActual 54: 268435456 op, 680251700.00 ns, 2.5341 ns/op\n",
"WorkloadActual 55: 268435456 op, 897927800.00 ns, 3.3450 ns/op\n",
"WorkloadActual 56: 268435456 op, 733411000.00 ns, 2.7322 ns/op\n",
"WorkloadActual 57: 268435456 op, 886096200.00 ns, 3.3010 ns/op\n",
"WorkloadActual 58: 268435456 op, 626306000.00 ns, 2.3332 ns/op\n",
"WorkloadActual 59: 268435456 op, 704193500.00 ns, 2.6233 ns/op\n",
"WorkloadActual 60: 268435456 op, 836078900.00 ns, 3.1146 ns/op\n",
"WorkloadActual 61: 268435456 op, 710367200.00 ns, 2.6463 ns/op\n",
"WorkloadActual 62: 268435456 op, 639291100.00 ns, 2.3815 ns/op\n",
"WorkloadActual 63: 268435456 op, 760419400.00 ns, 2.8328 ns/op\n",
"WorkloadActual 64: 268435456 op, 767204200.00 ns, 2.8581 ns/op\n",
"WorkloadActual 65: 268435456 op, 740556200.00 ns, 2.7588 ns/op\n",
"WorkloadActual 66: 268435456 op, 677227400.00 ns, 2.5229 ns/op\n",
"WorkloadActual 67: 268435456 op, 628378400.00 ns, 2.3409 ns/op\n",
"WorkloadActual 68: 268435456 op, 648624500.00 ns, 2.4163 ns/op\n",
"WorkloadActual 69: 268435456 op, 625241200.00 ns, 2.3292 ns/op\n",
"WorkloadActual 70: 268435456 op, 621494600.00 ns, 2.3152 ns/op\n",
"WorkloadActual 71: 268435456 op, 785918100.00 ns, 2.9278 ns/op\n",
"WorkloadActual 72: 268435456 op, 679462700.00 ns, 2.5312 ns/op\n",
"WorkloadActual 73: 268435456 op, 803845400.00 ns, 2.9946 ns/op\n",
"WorkloadActual 74: 268435456 op, 658608900.00 ns, 2.4535 ns/op\n",
"WorkloadActual 75: 268435456 op, 639482200.00 ns, 2.3823 ns/op\n",
"WorkloadActual 76: 268435456 op, 663531300.00 ns, 2.4718 ns/op\n",
"WorkloadActual 77: 268435456 op, 683369900.00 ns, 2.5458 ns/op\n",
"WorkloadActual 78: 268435456 op, 680896400.00 ns, 2.5365 ns/op\n",
"WorkloadActual 79: 268435456 op, 696729500.00 ns, 2.5955 ns/op\n",
"WorkloadActual 80: 268435456 op, 685439500.00 ns, 2.5535 ns/op\n",
"WorkloadActual 81: 268435456 op, 684179000.00 ns, 2.5488 ns/op\n",
"WorkloadActual 82: 268435456 op, 779341100.00 ns, 2.9033 ns/op\n",
"WorkloadActual 83: 268435456 op, 655296100.00 ns, 2.4412 ns/op\n",
"WorkloadActual 84: 268435456 op, 628327900.00 ns, 2.3407 ns/op\n",
"WorkloadActual 85: 268435456 op, 629001300.00 ns, 2.3432 ns/op\n",
"WorkloadActual 86: 268435456 op, 762178700.00 ns, 2.8393 ns/op\n",
"WorkloadActual 87: 268435456 op, 648718100.00 ns, 2.4167 ns/op\n",
"WorkloadActual 88: 268435456 op, 769951000.00 ns, 2.8683 ns/op\n",
"WorkloadActual 89: 268435456 op, 691268700.00 ns, 2.5752 ns/op\n",
"WorkloadActual 90: 268435456 op, 638621700.00 ns, 2.3791 ns/op\n",
"WorkloadActual 91: 268435456 op, 761102400.00 ns, 2.8353 ns/op\n",
"WorkloadActual 92: 268435456 op, 734246400.00 ns, 2.7353 ns/op\n",
"WorkloadActual 93: 268435456 op, 798007700.00 ns, 2.9728 ns/op\n",
"WorkloadActual 94: 268435456 op, 780768100.00 ns, 2.9086 ns/op\n",
"WorkloadActual 95: 268435456 op, 705217300.00 ns, 2.6271 ns/op\n",
"WorkloadActual 96: 268435456 op, 662000500.00 ns, 2.4661 ns/op\n",
"WorkloadActual 97: 268435456 op, 683222400.00 ns, 2.5452 ns/op\n",
"WorkloadActual 98: 268435456 op, 650537700.00 ns, 2.4234 ns/op\n",
"WorkloadActual 99: 268435456 op, 737556000.00 ns, 2.7476 ns/op\n",
"WorkloadActual 100: 268435456 op, 808114200.00 ns, 3.0105 ns/op\n",
"\n",
"WorkloadResult 1: 268435456 op, 160690000.00 ns, 0.5986 ns/op\n",
"WorkloadResult 2: 268435456 op, 331038500.00 ns, 1.2332 ns/op\n",
"WorkloadResult 3: 268435456 op, 144876800.00 ns, 0.5397 ns/op\n",
"WorkloadResult 4: 268435456 op, 175082900.00 ns, 0.6522 ns/op\n",
"WorkloadResult 5: 268435456 op, 112681300.00 ns, 0.4198 ns/op\n",
"WorkloadResult 6: 268435456 op, 139190200.00 ns, 0.5185 ns/op\n",
"WorkloadResult 7: 268435456 op, 99627700.00 ns, 0.3711 ns/op\n",
"WorkloadResult 8: 268435456 op, 123909900.00 ns, 0.4616 ns/op\n",
"WorkloadResult 9: 268435456 op, 190315900.00 ns, 0.7090 ns/op\n",
"WorkloadResult 10: 268435456 op, 253398000.00 ns, 0.9440 ns/op\n",
"WorkloadResult 11: 268435456 op, 133665400.00 ns, 0.4979 ns/op\n",
"WorkloadResult 12: 268435456 op, 155615900.00 ns, 0.5797 ns/op\n",
"WorkloadResult 13: 268435456 op, 150335200.00 ns, 0.5600 ns/op\n",
"WorkloadResult 14: 268435456 op, 98004900.00 ns, 0.3651 ns/op\n",
"WorkloadResult 15: 268435456 op, 122841000.00 ns, 0.4576 ns/op\n",
"WorkloadResult 16: 268435456 op, 156607900.00 ns, 0.5834 ns/op\n",
"WorkloadResult 17: 268435456 op, 224635300.00 ns, 0.8368 ns/op\n",
"WorkloadResult 18: 268435456 op, 247163900.00 ns, 0.9208 ns/op\n",
"WorkloadResult 19: 268435456 op, 151869700.00 ns, 0.5658 ns/op\n",
"WorkloadResult 20: 268435456 op, 178470100.00 ns, 0.6649 ns/op\n",
"WorkloadResult 21: 268435456 op, 183938200.00 ns, 0.6852 ns/op\n",
"WorkloadResult 22: 268435456 op, 99824200.00 ns, 0.3719 ns/op\n",
"WorkloadResult 23: 268435456 op, 126030400.00 ns, 0.4695 ns/op\n",
"WorkloadResult 24: 268435456 op, 261932400.00 ns, 0.9758 ns/op\n",
"WorkloadResult 25: 268435456 op, 181792500.00 ns, 0.6772 ns/op\n",
"WorkloadResult 26: 268435456 op, 269842000.00 ns, 1.0052 ns/op\n",
"WorkloadResult 27: 268435456 op, 215749000.00 ns, 0.8037 ns/op\n",
"WorkloadResult 28: 268435456 op, 320981500.00 ns, 1.1957 ns/op\n",
"WorkloadResult 29: 268435456 op, 214215900.00 ns, 0.7980 ns/op\n",
"WorkloadResult 30: 268435456 op, 269531300.00 ns, 1.0041 ns/op\n",
"WorkloadResult 31: 268435456 op, 177197600.00 ns, 0.6601 ns/op\n",
"WorkloadResult 32: 268435456 op, 314763600.00 ns, 1.1726 ns/op\n",
"WorkloadResult 33: 268435456 op, 178591800.00 ns, 0.6653 ns/op\n",
"WorkloadResult 34: 268435456 op, 236080200.00 ns, 0.8795 ns/op\n",
"WorkloadResult 35: 268435456 op, 172179500.00 ns, 0.6414 ns/op\n",
"WorkloadResult 36: 268435456 op, 144003700.00 ns, 0.5365 ns/op\n",
"WorkloadResult 37: 268435456 op, 222639500.00 ns, 0.8294 ns/op\n",
"WorkloadResult 38: 268435456 op, 287048300.00 ns, 1.0693 ns/op\n",
"WorkloadResult 39: 268435456 op, 189926200.00 ns, 0.7075 ns/op\n",
"WorkloadResult 40: 268435456 op, 246612000.00 ns, 0.9187 ns/op\n",
"WorkloadResult 41: 268435456 op, 251570200.00 ns, 0.9372 ns/op\n",
"WorkloadResult 42: 268435456 op, 194116100.00 ns, 0.7231 ns/op\n",
"WorkloadResult 43: 268435456 op, 175447400.00 ns, 0.6536 ns/op\n",
"WorkloadResult 44: 268435456 op, 105513100.00 ns, 0.3931 ns/op\n",
"WorkloadResult 45: 268435456 op, 205796900.00 ns, 0.7667 ns/op\n",
"WorkloadResult 46: 268435456 op, 258587500.00 ns, 0.9633 ns/op\n",
"WorkloadResult 47: 268435456 op, 300986100.00 ns, 1.1213 ns/op\n",
"WorkloadResult 48: 268435456 op, 227213400.00 ns, 0.8464 ns/op\n",
"WorkloadResult 49: 268435456 op, 130351200.00 ns, 0.4856 ns/op\n",
"WorkloadResult 50: 268435456 op, 194681100.00 ns, 0.7252 ns/op\n",
"WorkloadResult 51: 268435456 op, 193734500.00 ns, 0.7217 ns/op\n",
"WorkloadResult 52: 268435456 op, 139960600.00 ns, 0.5214 ns/op\n",
"WorkloadResult 53: 268435456 op, 357636700.00 ns, 1.3323 ns/op\n",
"WorkloadResult 54: 268435456 op, 193119900.00 ns, 0.7194 ns/op\n",
"WorkloadResult 55: 268435456 op, 345805100.00 ns, 1.2882 ns/op\n",
"WorkloadResult 56: 268435456 op, 86014900.00 ns, 0.3204 ns/op\n",
"WorkloadResult 57: 268435456 op, 163902400.00 ns, 0.6106 ns/op\n",
"WorkloadResult 58: 268435456 op, 295787800.00 ns, 1.1019 ns/op\n",
"WorkloadResult 59: 268435456 op, 170076100.00 ns, 0.6336 ns/op\n",
"WorkloadResult 60: 268435456 op, 99000000.00 ns, 0.3688 ns/op\n",
"WorkloadResult 61: 268435456 op, 220128300.00 ns, 0.8200 ns/op\n",
"WorkloadResult 62: 268435456 op, 226913100.00 ns, 0.8453 ns/op\n",
"WorkloadResult 63: 268435456 op, 200265100.00 ns, 0.7460 ns/op\n",
"WorkloadResult 64: 268435456 op, 136936300.00 ns, 0.5101 ns/op\n",
"WorkloadResult 65: 268435456 op, 88087300.00 ns, 0.3282 ns/op\n",
"WorkloadResult 66: 268435456 op, 108333400.00 ns, 0.4036 ns/op\n",
"WorkloadResult 67: 268435456 op, 84950100.00 ns, 0.3165 ns/op\n",
"WorkloadResult 68: 268435456 op, 81203500.00 ns, 0.3025 ns/op\n",
"WorkloadResult 69: 268435456 op, 245627000.00 ns, 0.9150 ns/op\n",
"WorkloadResult 70: 268435456 op, 139171600.00 ns, 0.5185 ns/op\n",
"WorkloadResult 71: 268435456 op, 263554300.00 ns, 0.9818 ns/op\n",
"WorkloadResult 72: 268435456 op, 118317800.00 ns, 0.4408 ns/op\n",
"WorkloadResult 73: 268435456 op, 99191100.00 ns, 0.3695 ns/op\n",
"WorkloadResult 74: 268435456 op, 123240200.00 ns, 0.4591 ns/op\n",
"WorkloadResult 75: 268435456 op, 143078800.00 ns, 0.5330 ns/op\n",
"WorkloadResult 76: 268435456 op, 140605300.00 ns, 0.5238 ns/op\n",
"WorkloadResult 77: 268435456 op, 156438400.00 ns, 0.5828 ns/op\n",
"WorkloadResult 78: 268435456 op, 145148400.00 ns, 0.5407 ns/op\n",
"WorkloadResult 79: 268435456 op, 143887900.00 ns, 0.5360 ns/op\n",
"WorkloadResult 80: 268435456 op, 239050000.00 ns, 0.8905 ns/op\n",
"WorkloadResult 81: 268435456 op, 115005000.00 ns, 0.4284 ns/op\n",
"WorkloadResult 82: 268435456 op, 88036800.00 ns, 0.3280 ns/op\n",
"WorkloadResult 83: 268435456 op, 88710200.00 ns, 0.3305 ns/op\n",
"WorkloadResult 84: 268435456 op, 221887600.00 ns, 0.8266 ns/op\n",
"WorkloadResult 85: 268435456 op, 108427000.00 ns, 0.4039 ns/op\n",
"WorkloadResult 86: 268435456 op, 229659900.00 ns, 0.8555 ns/op\n",
"WorkloadResult 87: 268435456 op, 150977600.00 ns, 0.5624 ns/op\n",
"WorkloadResult 88: 268435456 op, 98330600.00 ns, 0.3663 ns/op\n",
"WorkloadResult 89: 268435456 op, 220811300.00 ns, 0.8226 ns/op\n",
"WorkloadResult 90: 268435456 op, 193955300.00 ns, 0.7225 ns/op\n",
"WorkloadResult 91: 268435456 op, 257716600.00 ns, 0.9601 ns/op\n",
"WorkloadResult 92: 268435456 op, 240477000.00 ns, 0.8958 ns/op\n",
"WorkloadResult 93: 268435456 op, 164926200.00 ns, 0.6144 ns/op\n",
"WorkloadResult 94: 268435456 op, 121709400.00 ns, 0.4534 ns/op\n",
"WorkloadResult 95: 268435456 op, 142931300.00 ns, 0.5325 ns/op\n",
"WorkloadResult 96: 268435456 op, 110246600.00 ns, 0.4107 ns/op\n",
"WorkloadResult 97: 268435456 op, 197264900.00 ns, 0.7349 ns/op\n",
"WorkloadResult 98: 268435456 op, 267823100.00 ns, 0.9977 ns/op\n",
"\n",
"\n",
"Mean = 0.679 ns, StdErr = 0.025 ns (3.69%), N = 98, StdDev = 0.248 ns\n",
"Min = 0.303 ns, Q1 = 0.489 ns, Median = 0.653 ns, Q3 = 0.846 ns, Max = 1.332 ns\n",
"IQR = 0.357 ns, LowerFence = -0.048 ns, UpperFence = 1.382 ns\n",
"ConfidenceInterval = [0.594 ns; 0.765 ns] (CI 99.9%), Margin = 0.085 ns (12.53% of Mean)\n",
"Skewness = 0.53, Kurtosis = 2.52, MValue = 3.33\n",
"\n",
"// ** Remained 0 (0.0%) benchmark(s) to run. Estimated finish 2025-05-05 19:16 (0h 0m from now) **\n",
"\u001b]9;4;1;100\u001b\\Successfully reverted power plan (GUID: 8c0b799f-ec5b-4e3b-b41f-d5834206c3f2 FriendlyName: 卓越性能)\n",
"// ***** BenchmarkRunner: Finish *****\n",
"\n",
"// * Export *\n",
"\n",
"// * Detailed results *\n",
"MyBenchmarks.TestMethod: Job-LIUZPN(Toolchain=InProcessEmitToolchain)\n",
"Runtime = ; GC = \n",
"Mean = 0.679 ns, StdErr = 0.025 ns (3.69%), N = 98, StdDev = 0.248 ns\n",
"Min = 0.303 ns, Q1 = 0.489 ns, Median = 0.653 ns, Q3 = 0.846 ns, Max = 1.332 ns\n",
"IQR = 0.357 ns, LowerFence = -0.048 ns, UpperFence = 1.382 ns\n",
"ConfidenceInterval = [0.594 ns; 0.765 ns] (CI 99.9%), Margin = 0.085 ns (12.53% of Mean)\n",
"Skewness = 0.53, Kurtosis = 2.52, MValue = 3.33\n",
"-------------------- Histogram --------------------\n",
"[0.301 ns ; 0.448 ns) | @@@@@@@@@@@@@@@@@@@\n",
"[0.448 ns ; 0.589 ns) | @@@@@@@@@@@@@@@@@@@@@@@@\n",
"[0.589 ns ; 0.749 ns) | @@@@@@@@@@@@@@@@@@@@@\n",
"[0.749 ns ; 0.797 ns) | @\n",
"[0.797 ns ; 0.938 ns) | @@@@@@@@@@@@@@@@@\n",
"[0.938 ns ; 1.097 ns) | @@@@@@@@@\n",
"[1.097 ns ; 1.238 ns) | @@@@@\n",
"[1.238 ns ; 1.403 ns) | @@\n",
"---------------------------------------------------\n",
"\n",
"// * Summary *\n",
"\n",
"BenchmarkDotNet v0.13.12, Windows 11 (10.0.26100.3915)\n",
"Intel Core i9-9880H CPU 2.30GHz, 1 CPU, 16 logical and 8 physical cores\n",
".NET SDK 10.0.100-preview.3.25201.16\n",
" [Host] : .NET 9.0.4 (9.0.425.16305), X64 RyuJIT AVX2\n",
"\n",
"Toolchain=InProcessEmitToolchain \n",
"\n",
"| Method | Mean | Error | StdDev |\n",
"|----------- |----------:|----------:|----------:|\n",
"| TestMethod | 0.6795 ns | 0.0851 ns | 0.2483 ns |\n",
"\n",
"// * Legends *\n",
" Mean : Arithmetic mean of all measurements\n",
" Error : Half of 99.9% confidence interval\n",
" StdDev : Standard deviation of all measurements\n",
" 1 ns : 1 Nanosecond (0.000000001 sec)\n",
"\n",
"// ***** BenchmarkRunner: End *****\n",
"Run time: 00:01:46 (106.52 sec), executed benchmarks: 1\n",
"\n",
"Global total time: 00:01:46 (106.52 sec), executed benchmarks: 1\n",
"// * Artifacts cleanup *\n",
"Artifacts cleanup is finished\n",
"\u001b]9;4;0;0\u001b\\"
]
}
],
"source": [
"var summary = BenchmarkRunner.Run<MyBenchmarks>(new BenchmarkDotNet.Configs.DebugInProcessConfig());"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 关键注意事项"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. 配置模式\n",
"\n",
" Polyglot Notebook 默认使用 Debug 配置,需通过 DebugInProcessConfig 强制适配,否则可能报错"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. 内存分配分析\n",
"\n",
" 添加 [MemoryDiagnoser] 属性可监控内存分配情况"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. 避免内联优化\n",
"\n",
" 若测试简单方法,需确保编译器未将其优化为内联代码,可通过复杂逻辑或 [MethodImpl] 属性规避"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".NET (C#)",
"language": "C#",
"name": ".net-csharp"
},
"language_info": {
"name": "polyglot-notebook"
},
"orig_nbformat": 4,
"polyglot_notebook": {
"kernelInfo": {
"defaultKernelName": "csharp",
"items": [
{
"aliases": [],
"name": "csharp"
},
{
"aliases": [],
"name": "razor"
}
]
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}