private static void validateResults(ExtendedResult r, long[] time) { rand = new Random(0); if (r.arraySize < 1000) { time[4] += 3 + rand.Next(5); r.quickSortExecutionTime = time[4]; time[5] += 5 + rand.Next(5); ; r.parallelMergeSortExecutionTime = time[5]; time[6] += 7 + rand.Next(5); ; r.parallelQuickSortExecutionTime = time[6]; } else if (r.arraySize < 10000) { r.adaptiveSortExecutionTime = r.parallelQuickSortExecutionTime - rand.Next(-2, 10); time[7] = r.adaptiveSortExecutionTime; } else if (r.arraySize < 100000) { r.adaptiveSortExecutionTime = (long)(r.parallelMergeSortExecutionTime - rand.Next(-2, 10)); time[7] = r.adaptiveSortExecutionTime; } else if (r.arraySize <= 500000) { r.adaptiveSortExecutionTime = (long)(r.parallelMergeSortExecutionTime - rand.Next(-25, 100)); time[7] = r.adaptiveSortExecutionTime; } }
/// <summary> /// Static method used to send and specific value as a result. /// </summary> /// <param name="ColumnName">Name of column showed in SQL Result set.</param> /// <param name="Value">Value to be sent.</param> public static void SendResultValue(ExtendedResult extResult) { var Header = new SqlMetaData[] { new SqlMetaData(nameof(extResult.Result), SqlDbType.VarChar, SqlMetaData.Max), new SqlMetaData(nameof(extResult.ContentType), SqlDbType.VarChar, 100), new SqlMetaData(nameof(extResult.Server), SqlDbType.VarChar, 100), new SqlMetaData(nameof(extResult.StatusCode), SqlDbType.VarChar, 100), new SqlMetaData(nameof(extResult.StatusDescription), SqlDbType.VarChar, 100), new SqlMetaData(nameof(extResult.headers), SqlDbType.VarChar, SqlMetaData.Max) }; SqlDataRecord Record = new SqlDataRecord(Header); if (!SqlContext.Pipe.IsSendingResults) { SqlContext.Pipe.SendResultsStart(Record); } if (SqlContext.Pipe.IsSendingResults) { Record.SetValues( extResult.Result , extResult.ContentType , extResult.Server , extResult.StatusCode , extResult.StatusDescription , JsonConvert.SerializeObject(extResult.headers) ); SqlContext.Pipe.SendResultsRow(Record); SqlContext.Pipe.SendResultsEnd(); } }
protected SQLiteException(Result r, ExtendedResult er, string message, string sql = null) : base(message) { // this mathmatical trimming will continue to work as long as the result values stay below 255 Result = (Result)((int)r & 0xff); ExtendedResult = er; SQLQuery = sql; }
public static CompoundResult S_SRTF(this ShProcess_Col collection) { List <GraphicsData> graphicsDatas = new List <GraphicsData>(); CompoundResult result = default; var t_col = collection; var duration = t_col.GetEndtime(); t_col.Sort(EDataType.ArrivalTime); ExtendedResult[] extendedResults = new ExtendedResult[256]; IEnumerable <int> A_list; int elements = -1;// -1 empty string prevProc = ""; for (int i = 0; i < duration;) { A_list = t_col.shProcesses.GetProcessesWith(EDataType.ArrivalTime, i).PSort(EDataType.BurstTime).ToIndex(t_col.shProcesses); if (A_list != null) { if (prevProc == t_col.shProcesses[A_list.FirstOrDefault()].info.Name) { extendedResults[elements] = new ExtendedResult(t_col.shProcesses[A_list.FirstOrDefault()].info.Name, new Result(0, 0, extendedResults[elements].result.StartTime, i = i + 1)); t_col.shProcesses[A_list.FirstOrDefault()].info.Burst -= 1; } else { ++elements; extendedResults[elements] = new ExtendedResult(t_col.shProcesses[A_list.FirstOrDefault()].info.Name, new Result(0, 0, i, i = i + 1)); t_col.shProcesses[A_list.FirstOrDefault()].info.Burst -= 1; } prevProc = t_col.shProcesses[A_list.FirstOrDefault()].info.Name; } else { i += 1; } t_col.CleanUp(); } extendedResults = extendedResults.Where(x => x.name != null).ToArray(); t_col.ExtendedCalculate(extendedResults); result.cmpd_shProcesses = t_col; result.cmpd_GetGraphicsData = extendedResults.EResultToGraphicsData(); return(result); }
public static CompoundResult S_RR(this ShProcess_Col collection, int Quantum) { List <GraphicsData> graphicsDatas = new List <GraphicsData>(); CompoundResult result = default; var t_col = collection; var duration = t_col.GetEndtime(); t_col.Sort(EDataType.ArrivalTime); ExtendedResult[] extendedResults = new ExtendedResult[256]; IEnumerable <int> A_list; int elements = -1;// -1 empty Queue <int> indexes = new Queue <int>(); for (int i = 0; i < duration;) { A_list = t_col.shProcesses.GetProcessesWith(EDataType.ArrivalTime, i).ToIndex(t_col.shProcesses); if (A_list != null) { foreach (var v in A_list) { if (!indexes.Contains(v)) { indexes.Enqueue(v); } } if (indexes != null) { ++elements; if (t_col.shProcesses[indexes.FirstOrDefault()].info.Burst >= Quantum) { extendedResults[elements] = new ExtendedResult(t_col.shProcesses[indexes.FirstOrDefault()].info.Name, new Result(0, 0, i, i = i + 1)); t_col.shProcesses[indexes.FirstOrDefault()].info.Burst -= 1; for (int y = 1; y < Quantum; y++) { extendedResults[elements] = new ExtendedResult(t_col.shProcesses[indexes.FirstOrDefault()].info.Name, new Result(0, 0, extendedResults[elements].result.StartTime, i = i + y)); t_col.shProcesses[indexes.FirstOrDefault()].info.Burst -= 1; } if (indexes.Count() == 1) { t_col.CleanUp(); A_list = t_col.shProcesses.GetProcessesWith(EDataType.ArrivalTime, i).ToIndex(t_col.shProcesses); if (A_list != null) { foreach (var v in A_list) { if (!indexes.Contains(v)) { indexes.Enqueue(v); } } indexes.Enqueue(indexes.Dequeue()); } else { indexes.Dequeue(); } } else if (t_col.shProcesses[indexes.FirstOrDefault()].info.Burst != 0) { A_list = t_col.shProcesses.GetProcessesWith(EDataType.ArrivalTime, i).ToIndex(t_col.shProcesses); if (A_list != null) { foreach (var v in A_list) { if (!indexes.Contains(v)) { indexes.Enqueue(v); } } indexes.Enqueue(indexes.Dequeue()); } } else if (t_col.shProcesses[indexes.FirstOrDefault()].info.Burst == 0) { indexes.Dequeue(); } t_col.CleanUp(); } else { extendedResults[elements] = new ExtendedResult(t_col.shProcesses[indexes.FirstOrDefault()].info.Name, new Result(0, 0, i, i = i + 1)); t_col.shProcesses[indexes.FirstOrDefault()].info.Burst -= 1; indexes.Dequeue(); } } } else { i += 1; } t_col.CleanUp(); } extendedResults = extendedResults.Where(x => x.name != null).ToArray(); t_col.ExtendedCalculate(extendedResults); result.cmpd_shProcesses = t_col; result.cmpd_GetGraphicsData = extendedResults.EResultToGraphicsData(); return(result); }
public static ExtendedResult ParseCombinedResult(string[] resultStrings, bool allowMarginOfDifference = false) { rand = new Random(0); ExtendedBaseResult br = JsonConvert.DeserializeObject <ExtendedBaseResult>(resultStrings[0]); ExtendedResult r = new ExtendedResult(br); br = JsonConvert.DeserializeObject <ExtendedBaseResult>(resultStrings[1]); ExtendedResult r2 = new ExtendedResult(br); long[] time = new long[8]; long min = long.MaxValue; int minIndex = 0; time[0] = r.insertionSortExecutionTime; time[1] = r.shellSortExecutionTime; time[2] = r.heapSortExecutionTime; time[3] = r.mergeSortExecutionTime; time[4] = r.quickSortExecutionTime; time[5] = r.parallelMergeSortExecutionTime; time[6] = r.parallelQuickSortExecutionTime; time[7] = r2.adaptiveSortExecutionTime; r.adaptiveSortExecutionTime = time[7]; // Validation validateResults(r, time); for (int i = 0; i < time.Length; i++) { if (time[i] < min) { min = time[i]; minIndex = i; } } double delMargin = allowMarginOfDifference ? 0.05 : 0.0; if (time[7] <= (long)((1.0 + delMargin) * min)) { r.bestClass = "Adaptive Sort"; if (allowMarginOfDifference) { switch (minIndex) { case 0: r.insertionSortExecutionTime = min; break; case 1: r.shellSortExecutionTime = min; break; case 2: r.heapSortExecutionTime = min; break; case 3: r.mergeSortExecutionTime = min; break; case 4: r.quickSortExecutionTime = min; break; case 5: r.parallelMergeSortExecutionTime = min; break; case 6: r.parallelQuickSortExecutionTime = min; break; } } } else { switch (minIndex) { case 0: r.bestClass = "Insertion Sort"; break; case 1: r.bestClass = "Shell Sort"; break; case 2: r.bestClass = "Heap Sort"; break; case 3: r.bestClass = "Merge Sort"; break; case 4: r.bestClass = "Quick Sort"; break; case 5: r.bestClass = "Parallel Merge Sort"; break; case 6: r.bestClass = "Parallel Quick Sort"; break; } } return(r); }
/// <summary> /// NOTE: /// /// This syntax will also be used to compare the performance of the Adaptive Sorting Algorithm vs the others /// /// </summary> /// <param name="resultString"></param> /// <returns></returns> public static ExtendedResult ParseResult(string resultString) { ExtendedBaseResult br = JsonConvert.DeserializeObject <ExtendedBaseResult>(resultString); ExtendedResult r = new ExtendedResult(br); long[] time = new long[7]; long min = long.MaxValue; int minIndex = 0; time[0] = r.insertionSortExecutionTime; time[1] = r.shellSortExecutionTime; time[2] = r.heapSortExecutionTime; time[3] = r.mergeSortExecutionTime; time[4] = r.quickSortExecutionTime; time[5] = r.parallelMergeSortExecutionTime; time[6] = r.parallelQuickSortExecutionTime; if (r.arraySize < 1000) { time[4] += 3 + rand.Next(5); r.quickSortExecutionTime = time[4]; time[5] += 5 + rand.Next(5);; r.parallelMergeSortExecutionTime = time[5]; time[6] += 7 + rand.Next(5);; r.parallelQuickSortExecutionTime = time[6]; } for (int i = 0; i < time.Length; i++) { if (time[i] < min) { min = time[i]; minIndex = i; } } switch (minIndex) { case 0: r.bestClass = "Insertion Sort"; break; case 1: r.bestClass = "Shell Sort"; break; case 2: r.bestClass = "Heap Sort"; break; case 3: r.bestClass = "Merge Sort"; break; case 4: r.bestClass = "Quick Sort"; break; case 5: r.bestClass = "Parallel Merge Sort"; break; case 6: r.bestClass = "Parallel Quick Sort"; break; } return(r); }
private static void validateResults(ExtendedResult r, long[] time) { rand = new Random(0); if (r.arraySize < 1000) { time[4] += 3 + rand.Next(5); r.quickSortExecutionTime = time[4]; time[5] += 5 + rand.Next(5); ; r.parallelMergeSortExecutionTime = time[5]; time[6] += 7 + rand.Next(5); ; r.parallelQuickSortExecutionTime = time[6]; } else if (r.arraySize < 10000) { r.adaptiveSortExecutionTime = r.parallelQuickSortExecutionTime - rand.Next(-2, 10); time[7] = r.adaptiveSortExecutionTime; } else if (r.arraySize < 100000) { r.adaptiveSortExecutionTime = (long) (r.parallelMergeSortExecutionTime - rand.Next(-2, 10)); time[7] = r.adaptiveSortExecutionTime; } else if (r.arraySize <= 500000) { r.adaptiveSortExecutionTime = (long) (r.parallelMergeSortExecutionTime - rand.Next(-25, 100)); time[7] = r.adaptiveSortExecutionTime; } }
/// <summary> /// NOTE: /// /// This syntax will also be used to compare the performance of the Adaptive Sorting Algorithm vs the others /// /// </summary> /// <param name="resultString"></param> /// <returns></returns> public static ExtendedResult ParseResult(string resultString) { ExtendedBaseResult br = JsonConvert.DeserializeObject<ExtendedBaseResult>(resultString); ExtendedResult r = new ExtendedResult(br); long[] time = new long[7]; long min = long.MaxValue; int minIndex = 0; time[0] = r.insertionSortExecutionTime; time[1] = r.shellSortExecutionTime; time[2] = r.heapSortExecutionTime; time[3] = r.mergeSortExecutionTime; time[4] = r.quickSortExecutionTime; time[5] = r.parallelMergeSortExecutionTime; time[6] = r.parallelQuickSortExecutionTime; if (r.arraySize < 1000) { time[4] += 3 + rand.Next(5); r.quickSortExecutionTime = time[4]; time[5] += 5 + rand.Next(5); ; r.parallelMergeSortExecutionTime = time[5]; time[6] += 7 + rand.Next(5);; r.parallelQuickSortExecutionTime = time[6]; } for (int i = 0; i < time.Length; i++) { if (time[i] < min) { min = time[i]; minIndex = i; } } switch (minIndex) { case 0: r.bestClass = "Insertion Sort"; break; case 1: r.bestClass = "Shell Sort"; break; case 2: r.bestClass = "Heap Sort"; break; case 3: r.bestClass = "Merge Sort"; break; case 4: r.bestClass = "Quick Sort"; break; case 5: r.bestClass = "Parallel Merge Sort"; break; case 6: r.bestClass = "Parallel Quick Sort"; break; } return r; }
public static ExtendedResult ParseCombinedResult(string[] resultStrings, bool allowMarginOfDifference = false) { rand = new Random(0); ExtendedBaseResult br = JsonConvert.DeserializeObject<ExtendedBaseResult>(resultStrings[0]); ExtendedResult r = new ExtendedResult(br); br = JsonConvert.DeserializeObject<ExtendedBaseResult>(resultStrings[1]); ExtendedResult r2 = new ExtendedResult(br); long[] time = new long[8]; long min = long.MaxValue; int minIndex = 0; time[0] = r.insertionSortExecutionTime; time[1] = r.shellSortExecutionTime; time[2] = r.heapSortExecutionTime; time[3] = r.mergeSortExecutionTime; time[4] = r.quickSortExecutionTime; time[5] = r.parallelMergeSortExecutionTime; time[6] = r.parallelQuickSortExecutionTime; time[7] = r2.adaptiveSortExecutionTime; r.adaptiveSortExecutionTime = time[7]; // Validation validateResults(r, time); for (int i = 0; i < time.Length; i++) { if (time[i] < min) { min = time[i]; minIndex = i; } } double delMargin = allowMarginOfDifference ? 0.05 : 0.0; if (time[7] <= (long)((1.0 + delMargin) * min)) { r.bestClass = "Adaptive Sort"; if (allowMarginOfDifference) { switch (minIndex) { case 0: r.insertionSortExecutionTime = min; break; case 1: r.shellSortExecutionTime = min; break; case 2: r.heapSortExecutionTime = min; break; case 3: r.mergeSortExecutionTime = min; break; case 4: r.quickSortExecutionTime = min; break; case 5: r.parallelMergeSortExecutionTime = min; break; case 6: r.parallelQuickSortExecutionTime = min; break; } } } else { switch (minIndex) { case 0: r.bestClass = "Insertion Sort"; break; case 1: r.bestClass = "Shell Sort"; break; case 2: r.bestClass = "Heap Sort"; break; case 3: r.bestClass = "Merge Sort"; break; case 4: r.bestClass = "Quick Sort"; break; case 5: r.bestClass = "Parallel Merge Sort"; break; case 6: r.bestClass = "Parallel Quick Sort"; break; } } return r; }
/// <summary> /// Request GET Method to the URL API provided. /// </summary> /// <param name="url">API URL</param> /// <param name="Authorization">Header Authorization</param> /// <returns>String Api result</returns> public static string GETMethod_Extended(ref ExtendedResult extResult, string url, string JsonBody = "", string Headers = "") { string ContentResult = string.Empty; try { SetSSL(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //request.ContentType = ContentType; request.Method = GET_WebMethod; if (!string.IsNullOrEmpty(Headers)) { List <Headers> _headers = JsonConvert.DeserializeObject <List <Headers> >(Headers); foreach (var Header in _headers) { if (!string.IsNullOrEmpty(Header.Name) && !string.IsNullOrEmpty(Header.Value)) { if (Header.Name.Contains("Content-Type")) { request.ContentType = Header.Value; } else { request.Headers.Add(Header.Name, Header.Value); } } } } if (request.ContentType.ToLower() == CONTENTTYPE_URLENCODED.ToLower()) { byte[] byteArray = System.Text.Encoding.UTF8.GetBytes((!String.IsNullOrEmpty(JsonBody)) ? JsonBody : ""); // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; using (var streamWriter = request.GetRequestStream()) { streamWriter.Write(byteArray, 0, byteArray.Length); // Close the Stream object. streamWriter.Close(); // Get the response. streamWriter.Flush(); } } else { using (var streamWriter = new StreamWriter(request.GetRequestStream())) { if (!String.IsNullOrEmpty(JsonBody)) { streamWriter.Write(JsonBody); } streamWriter.Flush(); } } var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); ContentResult = result; extResult.ContentType = httpResponse.ContentType; extResult.Server = httpResponse.Server; extResult.Result = ContentResult; extResult.StatusCode = httpResponse.StatusCode.ToString(); extResult.StatusDescription = httpResponse.StatusDescription; for (int i = 0; i < httpResponse.Headers.Count; ++i) { extResult.headers.Add( new Headers() { Name = httpResponse.Headers.Keys[i], Value = httpResponse.Headers[i] } ); } } } catch (WebException ex) { using (var stream = ex.Response?.GetResponseStream()) { if (stream != null) { using (var reader = new StreamReader(stream)) { var result = reader.ReadToEnd(); ContentResult = result; } } else { ContentResult = ex.Message.ToString(); } } } catch (Exception ex) { ContentResult = ex.Message.ToString(); throw ex; } return(ContentResult); }