https://github.com/zonciu/memberpath
路径式对象成员访问工具,支持读写操作。Path-based object member access tool, supporting read and write operations.
https://github.com/zonciu/memberpath
Last synced: 2 months ago
JSON representation
路径式对象成员访问工具,支持读写操作。Path-based object member access tool, supporting read and write operations.
- Host: GitHub
- URL: https://github.com/zonciu/memberpath
- Owner: Zonciu
- Created: 2021-04-11T15:05:27.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-04-19T08:54:12.000Z (about 4 years ago)
- Last Synced: 2024-10-12T07:14:32.623Z (8 months ago)
- Language: C#
- Size: 18.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Member Path Utility
路径式对象成员访问工具,支持读写操作。
Path-based object member access tool, supporting read and write operations.
# API
## Path Extensions
### Get value
* PathGet
* PathGet
* PathGet
### Get nullable value
* PathGetOrDefault
* PathGetOrDefault
* PathGetOrDefault
### Set value
* PathSet
* PathSet
* PathSet
## Path Helper
### Get value
* GetDelegate
* GetDelegate
* GetDelegate
* GetDelegate
* GetLambda
* GetLambda
* GetLambda
* GetLambda
* GetExpression
### Get value or default
* GetDelegateDefault
* GetDelegateDefault
* GetDelegateDefault
* GetLambdaDefault
* GetLambdaDefault
* GetLambdaDefault
### Set value
* SetDelegate
* SetDelegate
* SetDelegate
* SetDelegate
* SetLambda
* SetLambda
* SetLambda
* SetLambda
* SetExpression
# Performance
## Get value
``` ini
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1440 (1909/November2018Update/19H2)
Intel Core i7-4790K CPU 4.00GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.201
[Host] : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT
DefaultJob : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT```
| Method | N | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
| --------------- | -------- | -------: | -------: | -------: | ----: | ------: | ----: | ----: | ----: | --------: |
| Normal | 10000000 | 120.0 ms | 0.94 ms | 0.83 ms | 1.00 | 0.00 | - | - | - | 267 B |
| PathGetTV | 10000000 | 745.9 ms | 14.02 ms | 19.19 ms | 6.28 | 0.19 | - | - | - | - |
| PathGetOV | 10000000 | 758.6 ms | 14.84 ms | 14.58 ms | 6.34 | 0.11 | - | - | - | 1344 B |
| PathGetOO | 10000000 | 722.1 ms | 6.45 ms | 6.03 ms | 6.02 | 0.05 | - | - | - | 1344 B |
| PathGetTVCached | 10000000 | 128.1 ms | 1.59 ms | 1.48 ms | 1.07 | 0.01 | - | - | - | - |
| PathGetOVCached | 10000000 | 131.3 ms | 1.85 ms | 1.73 ms | 1.10 | 0.01 | - | - | - | 260 B |
| PathGetOOCached | 10000000 | 132.2 ms | 0.90 ms | 0.80 ms | 1.10 | 0.01 | - | - | - | - |## Get value or default
``` ini
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1440 (1909/November2018Update/19H2)
Intel Core i7-4790K CPU 4.00GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.201
[Host] : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT
DefaultJob : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT```
| Method | N | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
| ------------------------ | -------- | --------: | -------: | -------: | ----: | ------: | ----: | ----: | ----: | --------: |
| Normal | 10000000 | 38.67 ms | 0.731 ms | 1.116 ms | 1.00 | 0.00 | - | - | - | - |
| PathGetOrDefaultTV | 10000000 | 610.19 ms | 3.800 ms | 3.369 ms | 15.67 | 0.42 | - | - | - | - |
| PathGetOrDefaultOV | 10000000 | 647.96 ms | 7.410 ms | 6.568 ms | 16.65 | 0.53 | - | - | - | - |
| PathGetOrDefaultOO | 10000000 | 634.03 ms | 8.877 ms | 8.303 ms | 16.25 | 0.46 | - | - | - | - |
| PathGetOrDefaultTVCached | 10000000 | 45.71 ms | 0.395 ms | 0.370 ms | 1.17 | 0.03 | - | - | - | 822 B |
| PathGetOrDefaultOVCached | 10000000 | 65.84 ms | 0.517 ms | 0.432 ms | 1.70 | 0.04 | - | - | - | 78 B |
| PathGetOrDefaultOOCached | 10000000 | 67.15 ms | 1.318 ms | 1.760 ms | 1.73 | 0.06 | - | - | - | - |## Set value
``` ini
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1440 (1909/November2018Update/19H2)
Intel Core i7-4790K CPU 4.00GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.201
[Host] : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT
DefaultJob : .NET Core 5.0.4 (CoreCLR 5.0.421.11614, CoreFX 5.0.421.11614), X64 RyuJIT```
| Method | N | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
| --------------- | -------- | --------: | --------: | --------: | ----: | ------: | ----: | ----: | ----: | --------: |
| Normal | 10000000 | 15.18 ms | 0.051 ms | 0.045 ms | 1.00 | 0.00 | - | - | - | 96 B |
| PathSetTV | 10000000 | 512.88 ms | 10.139 ms | 13.879 ms | 33.97 | 1.04 | - | - | - | 96 B |
| PathSetOV | 10000000 | 499.74 ms | 4.543 ms | 4.249 ms | 32.91 | 0.27 | - | - | - | 96 B |
| PathSetOO | 10000000 | 479.01 ms | 3.574 ms | 3.344 ms | 31.58 | 0.23 | - | - | - | 96 B |
| PathSetTVCached | 10000000 | 27.69 ms | 0.096 ms | 0.085 ms | 1.82 | 0.01 | - | - | - | 96 B |
| PathSetOVCached | 10000000 | 27.99 ms | 0.287 ms | 0.268 ms | 1.84 | 0.02 | - | - | - | 96 B |
| PathSetOOCached | 10000000 | 32.96 ms | 0.267 ms | 0.223 ms | 2.17 | 0.02 | - | - | - | 96 B |