性能测试

  1     class Program
  2     {
  3         private static readonly int countOfRows = 1000000;
  4         static void Main(string[] args)
  5         {
  6             //Test0();
  7 
  8             //Test1();
  9 
 10             //Test2();
 11 
 12             //Test3();
 13 
 14             //Test4();
 15         }
 16 
 17         /// <summary>
 18         /// model
 19         /// </summary>
 20         private static void Test0()
 21         {
 22             Stopwatch sw = Stopwatch.StartNew();
 23             Dictionary<int, Security> securities = new Dictionary<int, Security>();
 24             for (int i = 0; i < countOfRows; i++)
 25             {
 26                 securities[i] = new Security() { PRICE = i, DURATION_1 = 1, AT_BASE_DUR = 1 };
 27             }
 28             Console.WriteLine("done");
 29             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
 30             sw = Stopwatch.StartNew();
 31             double results = 0d;
 32             for (int i = 0; i < countOfRows; i++)
 33             {
 34                 var security = securities[i];
 35                 if (security != null)
 36                 {
 37                     for (int j = 0; j < 500; j++)
 38                     {
 39                         results = security.PRICE * security.DURATION_1 * security.AT_BASE_DUR;
 40                     }
 41                 }
 42             }
 43 
 44             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
 45             Console.ReadLine();
 46         }
 47 
 48         /// <summary>
 49         /// dictionary with string key
 50         /// </summary>
 51         private static void Test1()
 52         {
 53             Stopwatch sw = Stopwatch.StartNew();
 54             Dictionary<int, Dictionary<string, double>> securitiesA = new Dictionary<int, Dictionary<string, double>>();
 55             for (int i = 0; i < countOfRows; i++)
 56             {
 57                 securitiesA[i] = new Dictionary<string, double>() { { "price", i }, { "duration", 1 }, { "base", 1 } };
 58             }
 59             Console.WriteLine("done");
 60             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
 61             sw = Stopwatch.StartNew();
 62             double results = 0d;
 63             for (int i = 0; i < countOfRows; i++)
 64             {
 65                 var security = securitiesA[i];
 66                 if (security != null)
 67                 {
 68                     for (int j = 0; j < 500; j++)
 69                     {
 70                         results = security["price"] * security["duration"] * security["base"];
 71                     }
 72                 }
 73             }
 74             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
 75             Console.ReadLine();
 76         }
 77 
 78         /// <summary>
 79         /// double array
 80         /// </summary>
 81         private static void Test2()
 82         {
 83             Stopwatch sw = Stopwatch.StartNew();
 84             Dictionary<int, double[]> securitiesA = new Dictionary<int, double[]>();
 85             for (int i = 0; i < countOfRows; i++)
 86             {
 87                 double[] values = new double[3];
 88                 values[0] = i;
 89                 values[1] = 1;
 90                 values[2] = 1;
 91                 securitiesA[i] = values;
 92             }
 93             Console.WriteLine("done");
 94             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
 95             sw = Stopwatch.StartNew();
 96             double results = 0d;
 97             for (int i = 0; i < countOfRows; i++)
 98             {
 99                 var security = securitiesA[i];
100                 if (security != null)
101                 {
102                     for (int j = 0; j < 500; j++)
103                     {
104                         results = security[0] * security[1] * security[2];
105                     }
106                 }
107             }
108             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
109             Console.ReadLine();
110         }
111 
112         /// <summary>
113         /// dynamic array
114         /// </summary>
115         private static void Test3()
116         {
117             Stopwatch sw = Stopwatch.StartNew();
118             Dictionary<int, dynamic[]> securitiesA = new Dictionary<int, dynamic[]>();
119             for (int i = 0; i < countOfRows; i++)
120             {
121                 dynamic[] values = new dynamic[3];
122                 values[0] = i;
123                 values[1] = 1;
124                 values[2] = 1;
125                 securitiesA[i] = values;
126             }
127             Console.WriteLine("done");
128             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
129             sw = Stopwatch.StartNew();
130             double results = 0d;
131             for (int i = 0; i < countOfRows; i++)
132             {
133                 var security = securitiesA[i];
134                 if (security != null)
135                 {
136                     for (int j = 0; j < 500; j++)
137                     {
138                         results = security[0] * security[1] * security[2];
139                     }
140                 }
141             }
142             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
143             Console.ReadLine();
144         }
145 
146         /// <summary>
147         /// model + double array
148         /// </summary>
149         private static void Test4()
150         {
151             Stopwatch sw = Stopwatch.StartNew();
152             Dictionary<int, Security1> securitiesA = new Dictionary<int, Security1>();
153             for (int i = 0; i < countOfRows; i++)
154             {
155                 Security1 values = new Security1();
156                 values.SetValue("price", i);
157                 values.SetValue("duration_1", i);
158                 values.SetValue("base", i);
159                 securitiesA[i] = values;
160             }
161             Console.WriteLine("done");
162             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
163             sw = Stopwatch.StartNew();
164             double results = 0d;
165             for (int i = 0; i < countOfRows; i++)
166             {
167                 var security = securitiesA[i];
168                 if (security != null)
169                 {
170                     for (int j = 0; j < 500; j++)
171                     {
172                         results = security.PRICE * security.AT_BASE_DUR * security.DURATION_1;
173                     }
174                 }
175             }
176             Console.WriteLine(sw.ElapsedMilliseconds.ToString());
177             Console.ReadLine();
178         }
179     }
测试代码
  1     public class Security
  2     {
  3         public string SSM_ID;
  4         public NullableValue<Int16> INDUSTRY_CODE1;
  5         public NullableValue<Int16> INDUSTRY_CODE2;
  6         public NullableValue<Int16> INDUSTRY_CODE3;
  7         public NullableValue<Int16> INDUSTRY_COUNTRY;
  8         public NullableValue<DateTime> ASOF_DATE;
  9         public string POS_CLASS_CODE;
 10         public NullableValue<double> M2;
 11         public NullableValue<double> M3;
 12         public NullableValue<double> M4;
 13         public string BUM_COUNTRY;
 14         public string BUM_REGION_ID;
 15         public NullableValue<Int32> BUM_CLASS_CODE;
 16         public NullableValue<Int32> BUM_SUB_CODE;
 17         public NullableValue<Int32> BUM_CODE1;
 18         public NullableValue<double> BUM_CODE2;
 19         public NullableValue<double> ACCRUED_INT;
 20         public NullableValue<double> AT_BASE_DUR;
 21         public NullableValue<double> AT_BEAR_DUR;
 22         public NullableValue<double> AT_BULL_DUR;
 23         public NullableValue<double> AT_CURVE_DUR;
 24         public NullableValue<double> AT_SLOPE_DUR;
 25         public NullableValue<double> AT_TEN_30_DUR;
 26         public NullableValue<double> BARRA_SRISK;
 27         public NullableValue<double> BARRA_TRISK;
 28         public NullableValue<double> BETA;
 29         public NullableValue<double> BETA_GROWTH;
 30         public NullableValue<double> BETA_LEVERAGE;
 31         public NullableValue<double> BETA_LIQUID;
 32         public NullableValue<double> BETA_MOMENTUM;
 33         public NullableValue<double> BETA_SIZE;
 34         public NullableValue<Double> BETA_SIZENONL;
 35         public NullableValue<double> BETA_VALUE;
 36         public NullableValue<double> BETA_VOLATIL;
 37         public NullableValue<double> BETA_WORLD;
 38         public NullableValue<double> FACTOR;
 39         public NullableValue<double> TEN_30;
 40         public NullableValue<double> BASE;
 41         public NullableValue<double> BEAR;
 42         public NullableValue<double> BULL;
 43         public NullableValue<double> CORP;
 44         public NullableValue<double> CURVE;
 45         public NullableValue<double> MTGE;
 46         public NullableValue<double> PREPAY;
 47         public NullableValue<double> SLOPE;
 48         public NullableValue<double> VOLATILITY;
 49         public string BLOTTER_SEC_TYPE_CODE;
 50         public NullableValue<double> CARRY_RATE;
 51         public string CASH_EQUIVALENT_SW;
 52         public string CE_DUAL_CCY_SW;
 53         public string CE_RISK_CCY;
 54         public string CE_SETTLE_CCY;
 55         public string COMMODITY_REL_SW;
 56         public string COMP_SEC_TYPE_CODE;
 57         public string CONVERTIBLE_SW;
 58         public NullableValue<double> CONVERTS_DUR;
 59         public NullableValue<double> CONVEXITY;
 60         public string COUNTRY_OF_EXPOSURE;
 61         public NullableValue<double> COUPON;
 62         public string COUPON_TYPE;
 63         public NullableValue<Int32> CREDIT_STRUCTURE_SW;
 64         public NullableValue<double> CURR_DIS_FACTOR;
 65         public string CURRENCY_ISSUE;
 66         public string CURRENCY_SETTLEMENT;
 67         public NullableValue<double> CURVE_DURATION;
 68         public NullableValue<DateTime> DATED_DATE;
 69         public string DEPSTY_RECEIPT_SW;
 70         public NullableValue<double> DERIVATIVE_DENOM;
 71         public NullableValue<double> DURATION_1;
 72         public NullableValue<double> EM_DUR;
 73         public string EMERGING_MARKET_SW;
 74         public NullableValue<double> EPS;
 75         public NullableValue<double> EQ_OPT_THETA;
 76         public NullableValue<double> EQ_OPT_VEGA;
 77         public string EQUITY_REL_SW;
 78         public string EXCH_CODE;
 79         public NullableValue<double> EXCHANGE_RATE;
 80         public NullableValue<double> FIFTY_YR_DUR;
 81         public NullableValue<double> FINANCING_RATE;
 82         public NullableValue<double> FIVE_YR_DUR;
 83         public string FUT_GENERIC_TICKER;
 84         public NullableValue<double> HBETAGLO;
 85         public string HELDBY_GENERIC_SW;
 86         public NullableValue<double> IMP_VOL_ABS;
 87         public string INDEX_NAME;
 88         public string INDUSTRY_GROUP;
 89         public string INFLATE_PROTECTED_BOND_SW;
 90         public NullableValue<double> INITIAL_RATE;
 91         public string ISSUER_COUNTRY;
 92         public string ISSUER_ID;
 93         public NullableValue<Int16> ISSUER_TYPE;
 94         public NullableValue<double> LEVERAGE_FACTOR;
 95         public NullableValue<double> LIQF_FACTOR;
 96         public string LIQ_PAPER_IND;
 97         public NullableValue<double> LONG_CURVE_DUR;
 98         public NullableValue<Int32> MARKET_FACTOR;
 99         public NullableValue<DateTime> MATURITY_DATE;
100         public NullableValue<double> MTD_COUPON;
101         public NullableValue<double> MUNI_DUR;
102         public NullableValue<DateTime> NXT_CALL_DATE;
103         public NullableValue<double> OAS;
104         public NullableValue<double> OPTION_DELTA;
105         public NullableValue<DateTime> ORIG_ISSUE_DATE;
106         public NullableValue<double> PAR_PER_UNIT;
107         public NullableValue<double> PB_RATIO;
108         public NullableValue<double> PBETALOC;
109         public NullableValue<double> PBETAWLD;
110         public NullableValue<double> PE_RATIO;
111         public NullableValue<double> PRICE;
112         public NullableValue<double> PRICE_DENOMINATOR;
113         public NullableValue<double> PRICE_FACTOR;
114         public NullableValue<double> PRICE_MARKUP;
115         public string PRODUCT_TYPE;
116         public string PUT_CALL_IND;
117         public NullableValue<double> QTY_PER_CONTRACT;
118         public NullableValue<double> QUANTITY_FACTOR;
119         public string RELATED_SSM_ID;
120         public NullableValue<double> ROLLDOWN;
121         public string SEC_CLASS;
122         public NullableValue<double> SLOPE_DUR;
123         public string SMARTS_CLASS_CODE;
124         public string SMARTS_SUB_CODE;
125         public NullableValue<double> STRIKE_PRICE;
126         public string SUPRA_NATIONAL_SW;
127         public string SW1;
128         public string SW3;
129         public NullableValue<double> SWAP_SPRD_DUR;
130         public string TBA_SW;
131         public NullableValue<double> TEN_30_DUR;
132         public NullableValue<double> TIPS_DUR;
133         public string ULT_PARENT_ID;
134         public NullableValue<double> UNADJ_BASE_DUR;
135         public NullableValue<double> UNADJ_BEAR_DUR;
136         public NullableValue<double> UNADJ_BULL_DUR;
137         public NullableValue<double> UNADJ_CORP_SPRD_DUR;
138         public NullableValue<double> UNADJ_MTGE_SPRD_DUR;
139         public NullableValue<double> UNADJ_PREPAY_DUR;
140         public NullableValue<double> UNADJ_VOL_DUR;
141         public string UNIT_TRADED_SW;
142         public NullableValue<double> VOL_AVG_20D;
143         public NullableValue<double> YIELD;
144         public NullableValue<double> YIELD_TO_NEXT_CALL;
145         public NullableValue<double> YIELD_TO_WORST;
146         public NullableValue<double> YTM;
147         public NullableValue<double> PAR_SEG_10Y;
148         public NullableValue<double> PAR_SEG_12Y;
149         public NullableValue<double> PAR_SEG_15Y;
150         public NullableValue<double> PAR_SEG_1M;
151         public NullableValue<double> PAR_SEG_1Y;
152         public NullableValue<double> PAR_SEG_20Y;
153         public NullableValue<double> PAR_SEG_2Y;
154         public NullableValue<double> PAR_SEG_30Y;
155         public NullableValue<double> PAR_SEG_3M;
156         public NullableValue<double> PAR_SEG_3Y;
157         public NullableValue<double> PAR_SEG_50Y;
158         public NullableValue<double> PAR_SEG_5Y;
159         public NullableValue<double> PAR_SEG_7Y;
160         public NullableValue<double> FWD_SEG_10Y20Y;
161         public NullableValue<double> FWD_SEG_1Y2Y;
162         public NullableValue<double> FWD_SEG_1Y3Y;
163         public NullableValue<double> FWD_SEG_1Y4Y;
164         public NullableValue<double> FWD_SEG_2Y5Y;
165         public NullableValue<double> FWD_SEG_3M0M;
166         public NullableValue<double> FWD_SEG_3M12M;
167         public NullableValue<double> FWD_SEG_3M15M;
168         public NullableValue<double> FWD_SEG_3M18M;
169         public NullableValue<double> FWD_SEG_3M21M;
170         public NullableValue<double> FWD_SEG_3M3M;
171         public NullableValue<double> FWD_SEG_3M6M;
172         public NullableValue<double> FWD_SEG_3M9M;
173         public NullableValue<double> FWD_SEG_3Y7Y;
174         public NullableValue<double> FWD_SEG_5Y10Y;
175         public NullableValue<double> FWD_SEG_5Y15Y;
176         public NullableValue<double> G10;
177         public NullableValue<double> G100;
178         public NullableValue<double> G101;
179         public NullableValue<double> G102;
180         public NullableValue<double> G103;
181         public NullableValue<double> G104;
182         public NullableValue<double> G105;
183         public NullableValue<double> G106;
184         public NullableValue<double> G107;
185         public NullableValue<double> G108;
186         public NullableValue<double> G109;
187         public NullableValue<double> G110;
188         public NullableValue<double> G111;
189         public NullableValue<double> G112;
190         public NullableValue<double> G12;
191         public NullableValue<double> G13;
192         public NullableValue<double> G14;
193         public NullableValue<double> G15;
194         public NullableValue<double> G154;
195         public NullableValue<double> G17;
196         public NullableValue<double> G23;
197         public NullableValue<double> G25;
198         public NullableValue<double> G26;
199         public NullableValue<double> G27;
200         public NullableValue<double> G29;
201         public NullableValue<double> G3;
202         public NullableValue<double> G30;
203         public NullableValue<double> G31;
204         public NullableValue<double> G32;
205         public NullableValue<double> G33;
206         public NullableValue<double> G34;
207         public NullableValue<double> G35;
208         public NullableValue<double> G37;
209         public NullableValue<double> G38;
210         public NullableValue<double> G39;
211         public NullableValue<double> G40;
212         public NullableValue<double> G41;
213         public NullableValue<double> G42;
214         public NullableValue<double> G44;
215         public NullableValue<double> G46;
216         public NullableValue<double> G47;
217         public NullableValue<double> G5;
218         public NullableValue<double> G52;
219         public NullableValue<double> G53;
220         public NullableValue<double> G55;
221         public NullableValue<double> G56;
222         public NullableValue<double> G57;
223         public NullableValue<double> G58;
224         public NullableValue<double> G59;
225         public NullableValue<double> G60;
226         public NullableValue<double> G62;
227         public NullableValue<double> G63;
228         public NullableValue<double> G64;
229         public NullableValue<double> G65;
230         public NullableValue<double> G66;
231         public NullableValue<double> G67;
232         public NullableValue<double> G68;
233         public NullableValue<double> G69;
234         public NullableValue<double> G70;
235         public NullableValue<double> G71;
236         public NullableValue<double> G72;
237         public NullableValue<double> G73;
238         public NullableValue<double> G74;
239         public NullableValue<double> G80;
240         public NullableValue<double> G83;
241         public NullableValue<double> G84;
242         public NullableValue<double> G85;
243         public NullableValue<double> G86;
244         public NullableValue<double> G87;
245         public NullableValue<double> G88;
246         public NullableValue<double> G89;
247         public NullableValue<double> G9;
248         public NullableValue<double> G94;
249         public NullableValue<double> G95;
250         public NullableValue<double> G96;
251         public NullableValue<double> G97;
252         public NullableValue<double> G98;
253         public NullableValue<double> G99;
254     }
255 
256     public class Security1
257     {
258         public string SSM_ID;
259         public NullableValue<Int16> INDUSTRY_CODE1;
260         public NullableValue<Int16> INDUSTRY_CODE2;
261         public NullableValue<Int16> INDUSTRY_CODE3;
262         public NullableValue<Int16> INDUSTRY_COUNTRY;
263         public NullableValue<DateTime> ASOF_DATE;
264         public string POS_CLASS_CODE;
265         public NullableValue<double> M2;
266         public NullableValue<double> M3;
267         public NullableValue<double> M4;
268         public string BUM_COUNTRY;
269         public string BUM_REGION_ID;
270         public NullableValue<Int32> BUM_CLASS_CODE;
271         public NullableValue<Int32> BUM_SUB_CODE;
272         public NullableValue<Int32> BUM_CODE1;
273         public NullableValue<double> BUM_CODE2;
274         public NullableValue<double> ACCRUED_INT;
275         public double AT_BASE_DUR { get { return values[1]; } }
276         public NullableValue<double> AT_BEAR_DUR;
277         public NullableValue<double> AT_BULL_DUR;
278         public NullableValue<double> AT_CURVE_DUR;
279         public NullableValue<double> AT_SLOPE_DUR;
280         public NullableValue<double> AT_TEN_30_DUR;
281         public NullableValue<double> BARRA_SRISK;
282         public NullableValue<double> BARRA_TRISK;
283         public NullableValue<double> BETA;
284         public NullableValue<double> BETA_GROWTH;
285         public NullableValue<double> BETA_LEVERAGE;
286         public NullableValue<double> BETA_LIQUID;
287         public NullableValue<double> BETA_MOMENTUM;
288         public NullableValue<double> BETA_SIZE;
289         public NullableValue<Double> BETA_SIZENONL;
290         public NullableValue<double> BETA_VALUE;
291         public NullableValue<double> BETA_VOLATIL;
292         public NullableValue<double> BETA_WORLD;
293         public NullableValue<double> FACTOR;
294         public NullableValue<double> TEN_30;
295         public NullableValue<double> BASE;
296         public NullableValue<double> BEAR;
297         public NullableValue<double> BULL;
298         public NullableValue<double> CORP;
299         public NullableValue<double> CURVE;
300         public NullableValue<double> MTGE;
301         public NullableValue<double> PREPAY;
302         public NullableValue<double> SLOPE;
303         public NullableValue<double> VOLATILITY;
304         public string BLOTTER_SEC_TYPE_CODE;
305         public NullableValue<double> CARRY_RATE;
306         public string CASH_EQUIVALENT_SW;
307         public string CE_DUAL_CCY_SW;
308         public string CE_RISK_CCY;
309         public string CE_SETTLE_CCY;
310         public string COMMODITY_REL_SW;
311         public string COMP_SEC_TYPE_CODE;
312         public string CONVERTIBLE_SW;
313         public NullableValue<double> CONVERTS_DUR;
314         public NullableValue<double> CONVEXITY;
315         public string COUNTRY_OF_EXPOSURE;
316         public NullableValue<double> COUPON;
317         public string COUPON_TYPE;
318         public NullableValue<Int32> CREDIT_STRUCTURE_SW;
319         public NullableValue<double> CURR_DIS_FACTOR;
320         public string CURRENCY_ISSUE;
321         public string CURRENCY_SETTLEMENT;
322         public NullableValue<double> CURVE_DURATION;
323         public NullableValue<DateTime> DATED_DATE;
324         public string DEPSTY_RECEIPT_SW;
325         public NullableValue<double> DERIVATIVE_DENOM;
326         public double DURATION_1 { get { return values[2]; } }
327         public NullableValue<double> EM_DUR;
328         public string EMERGING_MARKET_SW;
329         public NullableValue<double> EPS;
330         public NullableValue<double> EQ_OPT_THETA;
331         public NullableValue<double> EQ_OPT_VEGA;
332         public string EQUITY_REL_SW;
333         public string EXCH_CODE;
334         public NullableValue<double> EXCHANGE_RATE;
335         public NullableValue<double> FIFTY_YR_DUR;
336         public NullableValue<double> FINANCING_RATE;
337         public NullableValue<double> FIVE_YR_DUR;
338         public string FUT_GENERIC_TICKER;
339         public NullableValue<double> HBETAGLO;
340         public string HELDBY_GENERIC_SW;
341         public NullableValue<double> IMP_VOL_ABS;
342         public string INDEX_NAME;
343         public string INDUSTRY_GROUP;
344         public string INFLATE_PROTECTED_BOND_SW;
345         public NullableValue<double> INITIAL_RATE;
346         public string ISSUER_COUNTRY;
347         public string ISSUER_ID;
348         public NullableValue<Int16> ISSUER_TYPE;
349         public NullableValue<double> LEVERAGE_FACTOR;
350         public NullableValue<double> LIQF_FACTOR;
351         public string LIQ_PAPER_IND;
352         public NullableValue<double> LONG_CURVE_DUR;
353         public NullableValue<Int32> MARKET_FACTOR;
354         public NullableValue<DateTime> MATURITY_DATE;
355         public NullableValue<double> MTD_COUPON;
356         public NullableValue<double> MUNI_DUR;
357         public NullableValue<DateTime> NXT_CALL_DATE;
358         public NullableValue<double> OAS;
359         public NullableValue<double> OPTION_DELTA;
360         public NullableValue<DateTime> ORIG_ISSUE_DATE;
361         public NullableValue<double> PAR_PER_UNIT;
362         public NullableValue<double> PB_RATIO;
363         public NullableValue<double> PBETALOC;
364         public NullableValue<double> PBETAWLD;
365         public NullableValue<double> PE_RATIO;
366         public double PRICE { get { return values[0]; } }
367         public NullableValue<double> PRICE_DENOMINATOR;
368         public NullableValue<double> PRICE_FACTOR;
369         public NullableValue<double> PRICE_MARKUP;
370         public string PRODUCT_TYPE;
371         public string PUT_CALL_IND;
372         public NullableValue<double> QTY_PER_CONTRACT;
373         public NullableValue<double> QUANTITY_FACTOR;
374         public string RELATED_SSM_ID;
375         public NullableValue<double> ROLLDOWN;
376         public string SEC_CLASS;
377         public NullableValue<double> SLOPE_DUR;
378         public string SMARTS_CLASS_CODE;
379         public string SMARTS_SUB_CODE;
380         public NullableValue<double> STRIKE_PRICE;
381         public string SUPRA_NATIONAL_SW;
382         public string SW1;
383         public string SW3;
384         public NullableValue<double> SWAP_SPRD_DUR;
385         public string TBA_SW;
386         public NullableValue<double> TEN_30_DUR;
387         public NullableValue<double> TIPS_DUR;
388         public string ULT_PARENT_ID;
389         public NullableValue<double> UNADJ_BASE_DUR;
390         public NullableValue<double> UNADJ_BEAR_DUR;
391         public NullableValue<double> UNADJ_BULL_DUR;
392         public NullableValue<double> UNADJ_CORP_SPRD_DUR;
393         public NullableValue<double> UNADJ_MTGE_SPRD_DUR;
394         public NullableValue<double> UNADJ_PREPAY_DUR;
395         public NullableValue<double> UNADJ_VOL_DUR;
396         public string UNIT_TRADED_SW;
397         public NullableValue<double> VOL_AVG_20D;
398         public NullableValue<double> YIELD;
399         public NullableValue<double> YIELD_TO_NEXT_CALL;
400         public NullableValue<double> YIELD_TO_WORST;
401         public NullableValue<double> YTM;
402         public NullableValue<double> PAR_SEG_10Y;
403         public NullableValue<double> PAR_SEG_12Y;
404         public NullableValue<double> PAR_SEG_15Y;
405         public NullableValue<double> PAR_SEG_1M;
406         public NullableValue<double> PAR_SEG_1Y;
407         public NullableValue<double> PAR_SEG_20Y;
408         public NullableValue<double> PAR_SEG_2Y;
409         public NullableValue<double> PAR_SEG_30Y;
410         public NullableValue<double> PAR_SEG_3M;
411         public NullableValue<double> PAR_SEG_3Y;
412         public NullableValue<double> PAR_SEG_50Y;
413         public NullableValue<double> PAR_SEG_5Y;
414         public NullableValue<double> PAR_SEG_7Y;
415         public NullableValue<double> FWD_SEG_10Y20Y;
416         public NullableValue<double> FWD_SEG_1Y2Y;
417         public NullableValue<double> FWD_SEG_1Y3Y;
418         public NullableValue<double> FWD_SEG_1Y4Y;
419         public NullableValue<double> FWD_SEG_2Y5Y;
420         public NullableValue<double> FWD_SEG_3M0M;
421         public NullableValue<double> FWD_SEG_3M12M;
422         public NullableValue<double> FWD_SEG_3M15M;
423         public NullableValue<double> FWD_SEG_3M18M;
424         public NullableValue<double> FWD_SEG_3M21M;
425         public NullableValue<double> FWD_SEG_3M3M;
426         public NullableValue<double> FWD_SEG_3M6M;
427         public NullableValue<double> FWD_SEG_3M9M;
428         public NullableValue<double> FWD_SEG_3Y7Y;
429         public NullableValue<double> FWD_SEG_5Y10Y;
430         public NullableValue<double> FWD_SEG_5Y15Y;
431         public NullableValue<double> G10;
432         public NullableValue<double> G100;
433         public NullableValue<double> G101;
434         public NullableValue<double> G102;
435         public NullableValue<double> G103;
436         public NullableValue<double> G104;
437         public NullableValue<double> G105;
438         public NullableValue<double> G106;
439         public NullableValue<double> G107;
440         public NullableValue<double> G108;
441         public NullableValue<double> G109;
442         public NullableValue<double> G110;
443         public NullableValue<double> G111;
444         public NullableValue<double> G112;
445         public NullableValue<double> G12;
446         public NullableValue<double> G13;
447         public NullableValue<double> G14;
448         public NullableValue<double> G15;
449         public NullableValue<double> G154;
450         public NullableValue<double> G17;
451         public NullableValue<double> G23;
452         public NullableValue<double> G25;
453         public NullableValue<double> G26;
454         public NullableValue<double> G27;
455         public NullableValue<double> G29;
456         public NullableValue<double> G3;
457         public NullableValue<double> G30;
458         public NullableValue<double> G31;
459         public NullableValue<double> G32;
460         public NullableValue<double> G33;
461         public NullableValue<double> G34;
462         public NullableValue<double> G35;
463         public NullableValue<double> G37;
464         public NullableValue<double> G38;
465         public NullableValue<double> G39;
466         public NullableValue<double> G40;
467         public NullableValue<double> G41;
468         public NullableValue<double> G42;
469         public NullableValue<double> G44;
470         public NullableValue<double> G46;
471         public NullableValue<double> G47;
472         public NullableValue<double> G5;
473         public NullableValue<double> G52;
474         public NullableValue<double> G53;
475         public NullableValue<double> G55;
476         public NullableValue<double> G56;
477         public NullableValue<double> G57;
478         public NullableValue<double> G58;
479         public NullableValue<double> G59;
480         public NullableValue<double> G60;
481         public NullableValue<double> G62;
482         public NullableValue<double> G63;
483         public NullableValue<double> G64;
484         public NullableValue<double> G65;
485         public NullableValue<double> G66;
486         public NullableValue<double> G67;
487         public NullableValue<double> G68;
488         public NullableValue<double> G69;
489         public NullableValue<double> G70;
490         public NullableValue<double> G71;
491         public NullableValue<double> G72;
492         public NullableValue<double> G73;
493         public NullableValue<double> G74;
494         public NullableValue<double> G80;
495         public NullableValue<double> G83;
496         public NullableValue<double> G84;
497         public NullableValue<double> G85;
498         public NullableValue<double> G86;
499         public NullableValue<double> G87;
500         public NullableValue<double> G88;
501         public NullableValue<double> G89;
502         public NullableValue<double> G9;
503         public NullableValue<double> G94;
504         public NullableValue<double> G95;
505         public NullableValue<double> G96;
506         public NullableValue<double> G97;
507         public NullableValue<double> G98;
508         public NullableValue<double> G99;
509         public void SetValue(string column, double value)
510         {
511             values[columnNameToIndexMappings[column]] = value;
512         }
513 
514         private double[] values;
515         private Dictionary<string, int> columnNameToIndexMappings = new Dictionary<string, int>();
516         public Security1()
517         {
518             values = new double[3];
519             columnNameToIndexMappings["price"] = 0;
520             columnNameToIndexMappings["duration_1"] = 1;
521             columnNameToIndexMappings["base"] = 2;
522         }
523 
524     }
Model定义

结果:

 

 

Test0(Model)

Test1(Dictionary)

Test2(Array)

Test3(Dynamic)

Test4

1

 初始化

28875 ms

2847

156

324

3217

取值

18867 ms

 

45689

 

3545

 

32385

 

9200

 

内存

3.5GB

0.8GB

0.1GB

0.1GB

3GB

2

 

8532

46247

3525

32175

9216

3

 

8412

46240

3563

32220

9238

你可能感兴趣的:(性能测试)