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 }
结果:
|
|
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 |