public void PerfTestUnsafe() { Stopwatch watch = new Stopwatch(); string result; GC.Collect(); GC.WaitForPendingFinalizers(); watch.Start(); result = FastConcat.Concat(this.corpus); watch.Stop(); Console.WriteLine("Unsafe Time: {0:0.000} ms", watch.Elapsed.TotalMilliseconds, result[0]); Console.WriteLine("Memory usage: {0:0.000} MB", Environment.WorkingSet / 1000000.0); Console.WriteLine(); }
static void Main(string[] args) { FastConcat <int> i = new FastConcat <int>(); i.Add(new int[] { 0, 1, 2, 3, 4 }); Console.WriteLine(i[0]); i.Add(new int[] { 5, 6, 7, 8, 9 }); Console.WriteLine(i[4]); Console.WriteLine("Enumerator:"); foreach (int val in i) { Console.WriteLine(val); } Console.ReadLine(); }
public PerfTestHarness(List <string> corpus) { this.corpus = corpus; // Warm up the JIT // Note that `result` is discarded. We reference it via 'result[0]' as an // unused paramater to my prints to be absolutely sure it doesn't get // optimized out. Cheap hack, but it works. string result; result = FastConcat.Concat(this.corpus); Console.WriteLine("Fast warmup done", result[0]); result = string.Concat(this.corpus.ToArray()); Console.WriteLine("Safe warmup done", result[0]); GC.Collect(); GC.WaitForPendingFinalizers(); }
/// <summary> /// Gets the collateral for obligor. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public GetCollateralForObligorResponse GetCollateralForObligor(GetCollateralForObligorRequest request) { ClientContext ctx = GetClientContext(request.User, request.Password); string errors = null; string outputBlock = string.Empty; int noOfRequery = 0; REQUEST_0189_FIELD outputField = new REQUEST_0189_FIELD { x189A_DESC = string.Empty, x189A_MODEL_DESC = string.Empty, x189A_OBLN_ITEM = string.Empty, x189A_TYPE = string.Empty }; REQUEST_0189_FIELD[] outputs = new REQUEST_0189_FIELD[120]; for (int i = 0; i < 120; i++) { outputs[i] = outputField; } var getCollateralForDocIn = new InquiryServicesContext.GetCollateralForObligorInDocument { LUW_BANK = request.BankId, LUW_BATCH_ID = request.BatchID, LUW_ERROR_MESSAGES = request.Errors, LUW_HEADER_RESTRICTIONS = Constants.LUW_HEADER_REST_CALL_APPL, LUW_ID = request.Luw, LUW_ITEM_NBR = request.ItemNumber, LUW_LENGTH = request.DataLength, LUW_OBLIGATION = request.ObligationNumber, LUW_OBLIGOR = request.ObligorNumber, LUW_REQUEST_CODE = request.RestartRequestCode, SEG_COUNTER = request.Segment }; try { var collateralList = GetCollateralArrayForObligor(ref ctx, ref errors, ref outputs, getCollateralForDocIn); //Need to requery for more data if segcounter is populated bool isRequery = int.TryParse(getCollateralForDocIn.SEG_COUNTER, out noOfRequery); if (isRequery && noOfRequery > 0) { //Concat the results FastConcat<CollateralDetail> collateralObligorArray = new FastConcat<CollateralDetail>(); collateralObligorArray.Add(collateralList); while (noOfRequery > 0) { //Set a new requery LUW ID getCollateralForDocIn.LUW_ID = Constants.GET_COLL_OBLGR_REQUERY_LUW_ID; var reQueryCollarteralList = GetCollateralArrayForObligor(ref ctx, ref errors, ref outputs, getCollateralForDocIn); //Append requery collateral list to the concat list collateralObligorArray.Add(reQueryCollarteralList); isRequery = int.TryParse(getCollateralForDocIn.SEG_COUNTER, out noOfRequery); } return new GetCollateralForObligorResponse() { CollateralList = collateralObligorArray.ToList(), Errors = errors }; } return new GetCollateralForObligorResponse() { CollateralList = collateralList.ToList(), Errors = errors }; } catch (Microsoft.HostIntegration.TI.CustomTIException Ex) { return HandleHISException<GetCollateralForObligorResponse>(Ex, request, "GetCollateralForObligor"); } catch (Exception ee) { string msg = ee.Message; throw; } }