From 709285b590ac254e83c417a849e796762f32ee05 Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 5 Mar 2026 17:20:42 -0500 Subject: [PATCH] Reduce instantiation of CultureInfo --- Axiom/Axiom.Core/Utility/Utility.cs | 7 +++--- .../MarketDataLib/Helper/MarketDataHelper.cs | 24 ++++++++++++++----- .../MarketDataLib/Utility/FeedParser.cs | 9 ++++--- MarketData/MarketDataLib/Utility/Utility.cs | 9 ++++--- eNavigator/MarketDataLib/Utility/Utility.cs | 6 ++--- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/Axiom/Axiom.Core/Utility/Utility.cs b/Axiom/Axiom.Core/Utility/Utility.cs index 1f75079..f4c1c60 100755 --- a/Axiom/Axiom.Core/Utility/Utility.cs +++ b/Axiom/Axiom.Core/Utility/Utility.cs @@ -9,6 +9,9 @@ namespace Axiom.Utils { public class Utility { + private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + private static readonly String[] formats = new[] { "yyyy/MM/dd","M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); + private Utility() { } @@ -62,10 +65,8 @@ namespace Axiom.Utils } public static DateTime ParseDate(String strDate) { - System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); - String[] formats = new[] { "yyyy/MM/dd","M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); strDate = strDate.Trim(); - DateTime dateTime=DateTime.ParseExact(strDate, formats, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal); + DateTime dateTime=DateTime.ParseExact(strDate, formats, cultureInfo, DateTimeStyles.AssumeLocal); return dateTime; } public static String AddQuotes(String item) diff --git a/MarketData/MarketDataLib/Helper/MarketDataHelper.cs b/MarketData/MarketDataLib/Helper/MarketDataHelper.cs index 8762b3b..8b06ca5 100755 --- a/MarketData/MarketDataLib/Helper/MarketDataHelper.cs +++ b/MarketData/MarketDataLib/Helper/MarketDataHelper.cs @@ -178,7 +178,7 @@ namespace MarketData.Helper // ************************************************************************** Z A C K S E A R N I N G S A N N O U N C E M E N T S ******************************************* // ****************************************************************************************************************************************************************************** /// - /// This retrieves earnings announcements from Zacks Research and is used during the nighyly process. + /// This retrieves earnings announcements from Zacks Research and is used during the nightly process. /// /// /// @@ -349,6 +349,9 @@ namespace MarketData.Helper public static Splits GetSplits() { HttpNetResponse httpNetResponse = null; + System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + String format="dd MMM yyyy"; + try { Splits splits = new Splits(); @@ -380,7 +383,7 @@ namespace MarketData.Helper if (null != dataColumns[0]) split.Exchange = dataColumns[0].InnerText.Trim().ToUpper(); // exchange if (null != dataColumns[1]) split.Symbol = dataColumns[1].InnerText.Trim().ToUpper(); // symbol if (null != dataColumns[2]) split.EffectiveDate = DateTime.ParseExact(dataColumns[2].InnerText.Trim().ToUpper(), - "dd MMM yyyy", new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal); + format, cultureInfo, DateTimeStyles.AssumeLocal); if (null != dataColumns[3]) split.StrRatio = dataColumns[3].InnerText.Trim().ToUpper(); // ratio splits.Add(split); } @@ -2926,6 +2929,11 @@ namespace MarketData.Helper { TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection(); Dictionary dates = new Dictionary(); + System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + string[]formatyyyy =new string[]{"yyyy"}; + string[]formatyyyyHMM =new string[]{"yyyy"}; + + DateTime today=DateTime.Now; try { @@ -2951,7 +2959,7 @@ namespace MarketData.Helper if(strDateElement.Length.Equals(4)) { - bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate); + bool result=DateTime.TryParseExact(strDateElement, formatyyyy, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate); if(!result)continue; if(reportDate.Year.Equals(today.Year)) { @@ -2964,7 +2972,7 @@ namespace MarketData.Helper } else { - bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy-MM"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate); + bool result=DateTime.TryParseExact(strDateElement, formatyyyyHMM, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate); if(!result)continue; } TimeSeriesElement timeSeriesElement = new TimeSeriesElement(); @@ -3240,6 +3248,10 @@ namespace MarketData.Helper private static Dictionary> CreateDictionaryByDate(Dictionary dataSets) { + System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + String[] formatyyyy = new string[]{"yyyy"}; + String[] formatyyyyHMM = new string[]{"yyyy-MM"}; + try { DateTime today=DateTime.Now; @@ -3256,7 +3268,7 @@ namespace MarketData.Helper DateTime reportDate=Utility.Epoch; if(strDateElement.Length.Equals(4)) { - bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate); + bool result=DateTime.TryParseExact(strDateElement, formatyyyy, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate); if(!result)continue; if(reportDate.Year.Equals(today.Year)) { @@ -3269,7 +3281,7 @@ namespace MarketData.Helper } else { - bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy-MM"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate); + bool result=DateTime.TryParseExact(strDateElement, formatyyyyHMM, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate); if(!result)continue; } diff --git a/MarketData/MarketDataLib/Utility/FeedParser.cs b/MarketData/MarketDataLib/Utility/FeedParser.cs index 3786722..6700d9a 100755 --- a/MarketData/MarketDataLib/Utility/FeedParser.cs +++ b/MarketData/MarketDataLib/Utility/FeedParser.cs @@ -11,6 +11,8 @@ namespace MarketData.Utils { public class FeedParser { + private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + private FeedParser() { } @@ -58,6 +60,7 @@ namespace MarketData.Utils periodEnding = periodEnding.Replace("Period Ending", ""); int length = periodEnding.Length; int index = 0; + while (index < length) { String strMonth = periodEnding.Substring(index, 3); @@ -69,7 +72,7 @@ namespace MarketData.Utils sb = new StringBuilder(); for (int yIndex = 0; yIndex < 5; yIndex++) sb.Append(periodEnding[index++]); String strYear = sb.ToString().Trim(); - DateTime periodEndingDate = DateTime.ParseExact(strMonth + Utility.Pad(strDay, '0', 2) + strYear, "MMMddyyyy", new System.Globalization.CultureInfo("en-US")); + DateTime periodEndingDate = DateTime.ParseExact(strMonth + Utility.Pad(strDay, '0', 2) + strYear, "MMMddyyyy", cultureInfo); periodEndingDates.Add(periodEndingDate); } return periodEndingDates; @@ -85,12 +88,12 @@ namespace MarketData.Utils strText = strText + " " + DateTime.Now.Year.ToString(); string[] items = strText.Split(' '); strText = items[0] + "-" + Utility.Pad(items[1], '0', 2) + "-" + items[2]; - return DateTime.ParseExact(strText, "MMM-dd-yyyy", new System.Globalization.CultureInfo("en-US")); + return DateTime.ParseExact(strText, "MMM-dd-yyyy", cultureInfo); } else { strText = strText.Replace(" ", "0"); - return DateTime.ParseExact(strText, "dd-MMM-yy", new System.Globalization.CultureInfo("en-US")); + return DateTime.ParseExact(strText, "dd-MMM-yy", cultureInfo); } } catch (Exception) diff --git a/MarketData/MarketDataLib/Utility/Utility.cs b/MarketData/MarketDataLib/Utility/Utility.cs index 034955c..d2c41b2 100755 --- a/MarketData/MarketDataLib/Utility/Utility.cs +++ b/MarketData/MarketDataLib/Utility/Utility.cs @@ -11,8 +11,10 @@ namespace MarketData.Utils { public class Utility { - private static DateTime epoch = DateTime.Parse("01-01-0001"); - private static TimeSpan oneDay=new TimeSpan(1,0,0,0); + private static readonly DateTime epoch = DateTime.Parse("01-01-0001"); + private static readonly TimeSpan oneDay=new TimeSpan(1,0,0,0); + private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + private static readonly String[] formats=new[] { "MMMM dd,yyyy" ,"yyyy-MM-dd HH:mm:ss","MM/dd/yyyy HH:MM tt", "yyyy-MM-dd","yy-MM-dd","yyyy-MM-dd hh:mm:ss tt","dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd","yyyy/MM/dd","M-d-yyyy","dd-MM-yyyy","MM-dd-yyyy","M.d.yyyy","dd.MM.yyyy","MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); public static bool IsProcessRunning(String processName, List commandArgs) { @@ -608,9 +610,6 @@ namespace MarketData.Utils } public static DateTime ParseDate(String strDate) { - System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); - - String[] formats=new[] { "MMMM dd,yyyy" ,"yyyy-MM-dd HH:mm:ss","MM/dd/yyyy HH:MM tt", "yyyy-MM-dd","yy-MM-dd","yyyy-MM-dd hh:mm:ss tt","dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd","yyyy/MM/dd","M-d-yyyy","dd-MM-yyyy","MM-dd-yyyy","M.d.yyyy","dd.MM.yyyy","MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); strDate = strDate.Trim(); DateTime dateTime=DateTime.ParseExact(strDate, formats, cultureInfo, DateTimeStyles.AssumeLocal); return dateTime; diff --git a/eNavigator/MarketDataLib/Utility/Utility.cs b/eNavigator/MarketDataLib/Utility/Utility.cs index a32c8e7..2a31c92 100755 --- a/eNavigator/MarketDataLib/Utility/Utility.cs +++ b/eNavigator/MarketDataLib/Utility/Utility.cs @@ -10,6 +10,8 @@ namespace MarketData.Utils { private static DateTime epoch = DateTime.Parse("01-01-0001"); private static TimeSpan oneDay=new TimeSpan(1,0,0,0); + private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); + private static readonly String[] formats = new[] {"dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd", "yyyy/MM/dd","M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); public static String ToUrl(String prefix, String ipAddress, String postfix) { @@ -339,10 +341,8 @@ namespace MarketData.Utils } public static DateTime ParseDate(String strDate) { - System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US"); - String[] formats = new[] {"dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd", "yyyy/MM/dd","M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); strDate = strDate.Trim(); - DateTime dateTime=DateTime.ParseExact(strDate, formats, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal); + DateTime dateTime=DateTime.ParseExact(strDate, formats, cultureInfo, DateTimeStyles.AssumeLocal); return dateTime; } public static double ParsePercent(String strPercent)