@@ -19,9 +19,6 @@ public TestUsingPooled()
19
19
public void Test ( )
20
20
{
21
21
TestClassConvert ( ) ;
22
- // TestToList();
23
- // TestToPooledList();
24
- // TestToList_ToPooledList();
25
22
}
26
23
27
24
public void TestClassConvert ( )
@@ -52,69 +49,42 @@ public void TestClassConvert()
52
49
lst . AsEnumerable ( ) . ToList ( ) ;
53
50
} , 3 ) ;
54
51
55
- TestAllocatedBytes ( "PooledList.Add( )" , ( ) =>
52
+ TestAllocatedBytes ( "lst.Select(o => o.Name )" , ( ) =>
56
53
{
57
- using PooledList < UserPO > lst = new ( 100000 ) ;
58
- for ( int i = 0 ; i < 100000 ; i ++ )
59
- {
60
- lst . Add ( new UserPO ( ) { Name = "123123" } ) ;
61
- }
62
- } , 10 ) ;
54
+ var lst2 = lst . Select ( o => o . Name ) ;
55
+ } , 3 ) ;
63
56
64
- TestAllocatedBytes ( "List.Add( )" , ( ) =>
57
+ TestAllocatedBytes ( "foreach (var s in lst.Select(o => o.Name) )" , ( ) =>
65
58
{
66
- List < UserPO > lst = new ( 100000 ) ;
67
- for ( int i = 0 ; i < 100000 ; i ++ )
68
- {
69
- lst . Add ( new UserPO ( ) { Name = "123123" } ) ;
70
- }
71
- } , 10 ) ;
72
- }
59
+ foreach ( var s in lst . Select ( o => o . Name ) ) { }
60
+ } , 3 ) ;
73
61
74
- public void TestToList ( )
75
- {
76
- GC . Collect ( ) ;
77
- var baseAllocated = GC . GetTotalAllocatedBytes ( ) ;
78
- Console . WriteLine ( $ "准备测试ToList的堆分配大小") ;
79
- for ( int j = 1 ; j <= 5 ; j ++ )
62
+ TestAllocatedBytes ( "lst.Select(o => o.Name).Count()" , ( ) =>
80
63
{
81
- for ( int i = 0 ; i < 1000 ; i ++ )
82
- {
83
- var lst2 = lst . Select ( o => o . Name ) . ToList ( ) ;
84
- }
85
- Console . WriteLine ( $ "{ j } /5:ToList:当前已分配堆大小:{ ( GC . GetTotalAllocatedBytes ( ) - baseAllocated ) . ToString ( "N0" ) } byte") ;
86
- }
87
- Console . WriteLine ( "---------------------------" ) ;
88
- }
64
+ lst . Select ( o => o . Name ) . Count ( ) ;
65
+ } , 3 ) ;
89
66
90
- public void TestToPooledList ( )
91
- {
92
- GC . Collect ( ) ;
93
- var baseAllocated = GC . GetTotalAllocatedBytes ( ) ;
94
- Console . WriteLine ( $ "准备测试ToPooledList的堆分配大小") ;
95
- for ( int j = 1 ; j <= 5 ; j ++ )
67
+ TestAllocatedBytes ( "lst.Select(o => o.Name).ToList()" , ( ) =>
96
68
{
97
- for ( int i = 0 ; i < 1000 ; i ++ )
98
- {
99
- using var lst2 = lst . Select ( o => o . Name ) . ToPooledList ( ) ;
100
- }
101
- Console . WriteLine ( $ "{ j } /5:ToPooledList:当前已分配堆大小:{ ( GC . GetTotalAllocatedBytes ( ) - baseAllocated ) . ToString ( "N0" ) } byte") ;
102
- }
103
- }
69
+ var lst2 = lst . Select ( o => o . Name ) . ToList ( ) ;
70
+ } , 3 ) ;
104
71
105
- public void TestToList_ToPooledList ( )
106
- {
107
- GC . Collect ( ) ;
108
- var baseAllocated = GC . GetTotalAllocatedBytes ( ) ;
109
- Console . WriteLine ( $ "准备测试ToList().ToPooledList的堆分配大小") ;
110
- for ( int j = 1 ; j <= 5 ; j ++ )
72
+ TestAllocatedBytes ( "lst.Select(o => o.Name).ToPooledList()" , ( ) =>
111
73
{
112
- for ( int i = 0 ; i < 1000 ; i ++ )
113
- {
114
- using var lst2 = lst . Select ( o => o . Name ) . ToList ( ) . ToPooledList ( ) ;
115
- }
116
- Console . WriteLine ( $ "{ j } /5:ToList().ToPooledList:当前已分配堆大小:{ ( GC . GetTotalAllocatedBytes ( ) - baseAllocated ) . ToString ( "N0" ) } byte") ;
117
- }
74
+ using var lst2 = lst . Select ( o => o . Name ) . ToPooledList ( ) ;
75
+ } , 3 ) ;
76
+
77
+ TestAllocatedBytes ( "PooledList.Add()" , ( ) =>
78
+ {
79
+ using PooledList < UserPO > lst = new ( ) ;
80
+ lst . Add ( new UserPO ( ) { Name = "123123" } ) ;
81
+ } , 3 ) ;
82
+
83
+ TestAllocatedBytes ( "List.Add()" , ( ) =>
84
+ {
85
+ List < UserPO > lst = new ( ) ;
86
+ lst . Add ( new UserPO ( ) { Name = "123123" } ) ;
87
+ } , 3 ) ;
118
88
}
119
89
120
90
public void TestAllocatedBytes ( string testName , Action act , int count )
0 commit comments