Skip to content

Commit 17bd0f7

Browse files
authored
Merge pull request #47 from dotnet-campus/t/walterlv/performance
大幅提升命令行解析性能
2 parents 89c98dc + 9e2ae0d commit 17bd0f7

File tree

53 files changed

+5529
-1546
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+5529
-1546
lines changed

ApiChanges.3.x-4.0.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ DotNetCampus.CommandLine 4.0版本带来了全面的架构升级和功能增强
1616

1717
- 从原来支持 Linux/GNU、CMD、PowerShell 三种风格的有限子集,升级为全面支持五种完整命令行风格:
1818
- `CommandLineStyle.Flexible`(默认):智能识别多种风格
19-
- `CommandLineStyle.GNU`:符合 GNU 规范的风格
20-
- `CommandLineStyle.POSIX`:符合 POSIX 规范的风格
19+
- `CommandLineStyle.Gnu`:符合 GNU 规范的风格
20+
- `CommandLineStyle.Posix`:符合 POSIX 规范的风格
2121
- `CommandLineStyle.DotNet`:.NET CLI 风格
2222
- `CommandLineStyle.PowerShell`:PowerShell 风格
2323
- 全面支持各种命令行选项格式:

Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@
3333
<RepositoryType>git</RepositoryType>
3434
</PropertyGroup>
3535

36+
<Import Project="$(MSBuildThisFileDirectory)src\DotNetCampus.CommandLine\Package\build\Package.props" />
37+
3638
</Project>

DotNetCampus.CommandLine.sln

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCampus.CommandLine.An
1717
EndProject
1818
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{7DDA8183-3606-4B08-86E3-A4537860448F}"
1919
EndProject
20-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCampus.CommandLine.Tests", "tests\DotNetCampus.CommandLine.Tests\DotNetCampus.CommandLine.Tests.csproj", "{470A596C-D8C4-4506-A71A-4BEEA08BCC62}"
20+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{F26EAA27-AA79-4B28-890C-D759F1D1A374}"
2121
EndProject
22-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCampus.CommandLine.Performance", "tests\DotNetCampus.CommandLine.Performance\DotNetCampus.CommandLine.Performance.csproj", "{7B664373-31A0-47AB-9076-15153EF4722A}"
22+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetCampus.CommandLine", "src\DotNetCampus.CommandLine\DotNetCampus.CommandLine.csproj", "{B61424A0-02C5-4C24-819B-8153D52BC0B8}"
2323
EndProject
24-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{F26EAA27-AA79-4B28-890C-D759F1D1A374}"
24+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetCampus.CommandLine.Sample", "samples\dotnetCampus.CommandLine.Sample\DotNetCampus.CommandLine.Sample.csproj", "{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}"
2525
EndProject
26-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCampus.CommandLine.Sample", "samples\DotNetCampus.CommandLine.Sample\DotNetCampus.CommandLine.Sample.csproj", "{B44D0273-A584-4845-899A-597D52387DC7}"
26+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetCampus.CommandLine.Tests", "tests\dotnetCampus.CommandLine.Tests\DotNetCampus.CommandLine.Tests.csproj", "{70991994-BB0C-4D00-9B74-E8736D0AD7C1}"
2727
EndProject
28-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetCampus.CommandLine", "src\DotNetCampus.CommandLine\DotNetCampus.CommandLine.csproj", "{B61424A0-02C5-4C24-819B-8153D52BC0B8}"
28+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetCampus.CommandLine.Performance", "tests\dotnetCampus.CommandLine.Performance\DotNetCampus.CommandLine.Performance.csproj", "{56B65FC1-CE75-4981-A880-954D891901D6}"
2929
EndProject
3030
Global
3131
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -43,30 +43,6 @@ Global
4343
{8AD0FEAB-2E36-4EBB-9E32-C4394FC6DC86}.Release|Any CPU.Build.0 = Release|Any CPU
4444
{8AD0FEAB-2E36-4EBB-9E32-C4394FC6DC86}.Release|x86.ActiveCfg = Release|Any CPU
4545
{8AD0FEAB-2E36-4EBB-9E32-C4394FC6DC86}.Release|x86.Build.0 = Release|Any CPU
46-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Debug|Any CPU.Build.0 = Debug|Any CPU
48-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Debug|x86.ActiveCfg = Debug|Any CPU
49-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Debug|x86.Build.0 = Debug|Any CPU
50-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Release|Any CPU.ActiveCfg = Release|Any CPU
51-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Release|Any CPU.Build.0 = Release|Any CPU
52-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Release|x86.ActiveCfg = Release|Any CPU
53-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62}.Release|x86.Build.0 = Release|Any CPU
54-
{7B664373-31A0-47AB-9076-15153EF4722A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55-
{7B664373-31A0-47AB-9076-15153EF4722A}.Debug|Any CPU.Build.0 = Debug|Any CPU
56-
{7B664373-31A0-47AB-9076-15153EF4722A}.Debug|x86.ActiveCfg = Debug|Any CPU
57-
{7B664373-31A0-47AB-9076-15153EF4722A}.Debug|x86.Build.0 = Debug|Any CPU
58-
{7B664373-31A0-47AB-9076-15153EF4722A}.Release|Any CPU.ActiveCfg = Release|Any CPU
59-
{7B664373-31A0-47AB-9076-15153EF4722A}.Release|Any CPU.Build.0 = Release|Any CPU
60-
{7B664373-31A0-47AB-9076-15153EF4722A}.Release|x86.ActiveCfg = Release|Any CPU
61-
{7B664373-31A0-47AB-9076-15153EF4722A}.Release|x86.Build.0 = Release|Any CPU
62-
{B44D0273-A584-4845-899A-597D52387DC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
63-
{B44D0273-A584-4845-899A-597D52387DC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
64-
{B44D0273-A584-4845-899A-597D52387DC7}.Debug|x86.ActiveCfg = Debug|Any CPU
65-
{B44D0273-A584-4845-899A-597D52387DC7}.Debug|x86.Build.0 = Debug|Any CPU
66-
{B44D0273-A584-4845-899A-597D52387DC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
67-
{B44D0273-A584-4845-899A-597D52387DC7}.Release|Any CPU.Build.0 = Release|Any CPU
68-
{B44D0273-A584-4845-899A-597D52387DC7}.Release|x86.ActiveCfg = Release|Any CPU
69-
{B44D0273-A584-4845-899A-597D52387DC7}.Release|x86.Build.0 = Release|Any CPU
7046
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7147
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
7248
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -75,14 +51,38 @@ Global
7551
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Release|Any CPU.Build.0 = Release|Any CPU
7652
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Release|x86.ActiveCfg = Release|Any CPU
7753
{B61424A0-02C5-4C24-819B-8153D52BC0B8}.Release|x86.Build.0 = Release|Any CPU
54+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
56+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Debug|x86.ActiveCfg = Debug|Any CPU
57+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Debug|x86.Build.0 = Debug|Any CPU
58+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
59+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Release|Any CPU.Build.0 = Release|Any CPU
60+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Release|x86.ActiveCfg = Release|Any CPU
61+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8}.Release|x86.Build.0 = Release|Any CPU
62+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
63+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
64+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Debug|x86.ActiveCfg = Debug|Any CPU
65+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Debug|x86.Build.0 = Debug|Any CPU
66+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
67+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Release|Any CPU.Build.0 = Release|Any CPU
68+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Release|x86.ActiveCfg = Release|Any CPU
69+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1}.Release|x86.Build.0 = Release|Any CPU
70+
{56B65FC1-CE75-4981-A880-954D891901D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
71+
{56B65FC1-CE75-4981-A880-954D891901D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
72+
{56B65FC1-CE75-4981-A880-954D891901D6}.Debug|x86.ActiveCfg = Debug|Any CPU
73+
{56B65FC1-CE75-4981-A880-954D891901D6}.Debug|x86.Build.0 = Debug|Any CPU
74+
{56B65FC1-CE75-4981-A880-954D891901D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
75+
{56B65FC1-CE75-4981-A880-954D891901D6}.Release|Any CPU.Build.0 = Release|Any CPU
76+
{56B65FC1-CE75-4981-A880-954D891901D6}.Release|x86.ActiveCfg = Release|Any CPU
77+
{56B65FC1-CE75-4981-A880-954D891901D6}.Release|x86.Build.0 = Release|Any CPU
7878
EndGlobalSection
7979
GlobalSection(SolutionProperties) = preSolution
8080
HideSolutionNode = FALSE
8181
EndGlobalSection
8282
GlobalSection(NestedProjects) = preSolution
83-
{470A596C-D8C4-4506-A71A-4BEEA08BCC62} = {7DDA8183-3606-4B08-86E3-A4537860448F}
84-
{7B664373-31A0-47AB-9076-15153EF4722A} = {7DDA8183-3606-4B08-86E3-A4537860448F}
85-
{B44D0273-A584-4845-899A-597D52387DC7} = {F26EAA27-AA79-4B28-890C-D759F1D1A374}
83+
{6B8F7500-B161-408D-BFA3-AE77CB8CF4D8} = {F26EAA27-AA79-4B28-890C-D759F1D1A374}
84+
{70991994-BB0C-4D00-9B74-E8736D0AD7C1} = {7DDA8183-3606-4B08-86E3-A4537860448F}
85+
{56B65FC1-CE75-4981-A880-954D891901D6} = {7DDA8183-3606-4B08-86E3-A4537860448F}
8686
EndGlobalSection
8787
GlobalSection(ExtensibilityGlobals) = postSolution
8888
SolutionGuid = {52E30C59-C5C8-4517-811A-667BFA2BFABB}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
DotNetCampus.CommandLine is a simple yet high-performance command line parsing library for .NET. Thanks to the power of source code generators, it provides efficient parsing capabilities with a developer-friendly experience.
1313

14-
Parsing a typical command line takes only about 5000ns (0.005ms), making it one of the fastest command line parsers available in .NET.
14+
Parsing a typical command line takes only about 0.8μs (microseconds), making it one of the fastest command line parsers available in .NET.
1515

1616
## Get Started
1717

0 commit comments

Comments
 (0)