Skip to content

Commit 524d23d

Browse files
Enhance the performance of Log API methods (#912)
* Remove unused configurationLoaded field. The configLoaded flag was not updated at the appropriate moment. * Enhance the performance of Log API methods * Remove unneeded reflection for GXLoggerFactory.GetLogger. * Enable test on DEBUG. * Temporarily disabling test. * Eliminate overhead in the Log API when logging is disabled. * Remove more unneeded reflection when creating logger instance. * Remove overhead at TraceRow method when log is turned off. * Improve GXLoggerLog4Net.TraceEnabled() method performance. * Performance improvement at methods GXLoggerLog4Net.Debug and GXLoggerLog4Net.Trace (cherry picked from commit 7c61fef)
1 parent 96717c3 commit 524d23d

35 files changed

+376
-143
lines changed

Diff for: dotnet/DotNetStandardClasses.sln

+10-2
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GXOtel.Diagnostics", "src\d
257257
EndProject
258258
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCoreCmdTest", "test\DotNetCoreCmdTest\DotNetCoreCmdTest.csproj", "{956402BD-AC8C-426E-961B-B77B3F3EDAEB}"
259259
EndProject
260+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{46DAAFD1-FAF5-4904-8EC5-406BE04E5538}"
261+
EndProject
262+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LogTest", "test\benchmarks\LogTest\LogTest.csproj", "{A1DBDCE0-4F09-445F-A202-9B260CDD46CF}"
263+
EndProject
260264
Global
261265
GlobalSection(SolutionConfigurationPlatforms) = preSolution
262266
Debug|Any CPU = Debug|Any CPU
@@ -627,7 +631,10 @@ Global
627631
{956402BD-AC8C-426E-961B-B77B3F3EDAEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
628632
{956402BD-AC8C-426E-961B-B77B3F3EDAEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
629633
{956402BD-AC8C-426E-961B-B77B3F3EDAEB}.Release|Any CPU.Build.0 = Release|Any CPU
630-
634+
{A1DBDCE0-4F09-445F-A202-9B260CDD46CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
635+
{A1DBDCE0-4F09-445F-A202-9B260CDD46CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
636+
{A1DBDCE0-4F09-445F-A202-9B260CDD46CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
637+
{A1DBDCE0-4F09-445F-A202-9B260CDD46CF}.Release|Any CPU.Build.0 = Release|Any CPU
631638
EndGlobalSection
632639
GlobalSection(SolutionProperties) = preSolution
633640
HideSolutionNode = FALSE
@@ -751,7 +758,8 @@ Global
751758
{0FCFB078-5584-469F-92CC-61B0A6216D0D} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
752759
{A42066E8-DDB9-4767-AEFA-E6D13EFF051A} = {BBE020D4-C0FF-41A9-9EB1-D1EE12CC4BB8}
753760
{956402BD-AC8C-426E-961B-B77B3F3EDAEB} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
754-
761+
{46DAAFD1-FAF5-4904-8EC5-406BE04E5538} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
762+
{A1DBDCE0-4F09-445F-A202-9B260CDD46CF} = {46DAAFD1-FAF5-4904-8EC5-406BE04E5538}
755763
EndGlobalSection
756764
GlobalSection(ExtensibilityGlobals) = postSolution
757765
SolutionGuid = {E18684C9-7D76-45CD-BF24-E3944B7F174C}

Diff for: dotnet/src/dotnetcore/GxClasses/Services/OpenTelemetry/OpenTelemetryService.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public interface IOpenTelemetryProvider
1010

1111
public static class OpenTelemetryService
1212
{
13-
private static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
13+
private static readonly IGXLogger log = GXLoggerFactory.GetLogger(typeof(OpenTelemetryService).FullName);
1414

1515
private static string OPENTELEMETRY_SERVICE = "Observability";
1616
public static string GX_ACTIVITY_SOURCE_NAME = "GeneXus.Tracing";

Diff for: dotnet/src/dotnetframework/GxClasses/Configuration/ExternalStorage.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class ExternalStorage : GxStorageProvider
1515

1616
private GXService providerService;
1717

18-
static readonly IGXLogger logger = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
18+
static readonly IGXLogger logger = GXLoggerFactory.GetLogger<ExternalStorage>();
1919

2020
public ExternalStorage()
2121
{

Diff for: dotnet/src/dotnetframework/GxClasses/Core/GXApplication.cs

-1
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,6 @@ internal class GxApplication
320320
public class GxContext : IGxContext
321321
{
322322
private static IGXLogger log = null;
323-
internal static bool configurationLoaded = Config.configLoaded;
324323
internal static string GX_SPA_REQUEST_HEADER = "X-SPA-REQUEST";
325324
internal static string GX_SPA_REDIRECT_URL = "X-SPA-REDIRECT-URL";
326325
internal const string GXLanguage = "GXLanguage";

Diff for: dotnet/src/dotnetframework/GxClasses/Core/GXUtilsCommon.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5597,7 +5597,7 @@ public string IniReadValue(string Section, string Key)
55975597
#endif
55985598
public static class GXDbFile
55995599
{
5600-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
5600+
static readonly IGXLogger log = GXLoggerFactory.GetLogger(typeof(GXDbFile).FullName);
56015601

56025602
private static Regex schemeRegex = new Regex("^" + Scheme + ":", RegexOptions.Compiled);
56035603

@@ -5818,7 +5818,7 @@ public static string PathToUrl(string path, bool absUrl, IGxContext context = nu
58185818

58195819
public static class GxImageUtil
58205820
{
5821-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
5821+
static readonly IGXLogger log = GXLoggerFactory.GetLogger(typeof(GxImageUtil).FullName);
58225822
private static Bitmap BitmapCreateFromStream(string filePathOrUrl)
58235823
{
58245824
Uri uri;

Diff for: dotnet/src/dotnetframework/GxClasses/Core/gxconfig.cs

+8-4
Original file line numberDiff line numberDiff line change
@@ -533,14 +533,15 @@ static NameValueCollection config
533533
{
534534
loadedConfigFile = configFileName;
535535
_config = loadConfig(configFileName, out logConfigSource);
536+
configLoaded = true;
536537
if (!string.IsNullOrEmpty(logConfigSource))
537538
logConfig(logConfigSource, out configuredFilename);
538539
else
539540
logConfig(configFileName, out configuredFilename);
540541
}
542+
#if !NETCORE
541543
else
542544
{
543-
#if !NETCORE
544545
if (GxContext.IsHttpContext &&
545546
File.Exists(Path.Combine(GxContext.StaticPhysicalPath(), "web.config")))
546547
{
@@ -576,10 +577,13 @@ static NameValueCollection config
576577
logConfig(logFile, out configuredFilename);
577578
loadedConfigFile = Path.GetFullPath(file);
578579
_config = loadConfig(file);
579-
580580
}
581-
581+
configLoaded = true;
582+
}
582583
#else
584+
else
585+
{
586+
583587
string basePath = FileUtil.GetBasePath();
584588
string currentDir = Directory.GetCurrentDirectory();
585589
string startupDir = FileUtil.GetStartupDirectory();
@@ -635,8 +639,8 @@ static NameValueCollection config
635639
{
636640
//"Could not register encoding provider";
637641
}
638-
#endif
639642
}
643+
#endif
640644
}
641645
}
642646
log = GXLoggerFactory.GetLogger<Config>();

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataCommon.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2174,7 +2174,7 @@ public class GxDataReader: IDataReader
21742174
protected string stmt;
21752175
protected GxConnectionCache cache;
21762176
protected IGxConnection con;
2177-
protected GxArrayList block;
2177+
protected List<object[]> block;
21782178
protected string key;
21792179
protected int pos;
21802180
protected bool cached;
@@ -2208,7 +2208,7 @@ public GxDataReader( IGxConnectionManager connManager, GxDataRecord dr, IGxConne
22082208
reader=dr.GetCommand(con,stmt,parameters).ExecuteReader();
22092209
cache.SetAvailableCommand(stmt, false, dynStmt);
22102210
open=true;
2211-
block=new GxArrayList(fetchSize);
2211+
block= new List<object[]>(fetchSize);
22122212
pos=-1;
22132213
if (cached)
22142214
{

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataDb2.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ protected override string BuildConnectionString(string datasourceName, string us
115115
public class GxDb2 : GxDataRecord
116116
{
117117

118-
private static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
118+
private static readonly IGXLogger log = GXLoggerFactory.GetLogger<GxDb2>();
119119

120120
public static string SQL_NULL_DATE_10="0000-00-00";
121121
public static string SQL_NULL_DATE_8="00000000";
@@ -523,7 +523,7 @@ sealed internal class Db2ConnectionWrapper : GxAbstractConnectionWrapper
523523
private static int changeConnState=-1;
524524
private static int changeConnStateExecuting = -1;
525525
private int openDataReaders;
526-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
526+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<Db2ConnectionWrapper>();
527527
public Db2ConnectionWrapper()
528528
{
529529
try

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataDb2400.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public override object GetValue(int i)
4444
}
4545
sealed internal class Db2ISeriesConnectionWrapper : GxAbstractConnectionWrapper
4646
{
47-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
47+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<Db2ISeriesConnectionWrapper>();
4848
public Db2ISeriesConnectionWrapper()
4949
{
5050
try
@@ -120,7 +120,7 @@ public override DbDataAdapter CreateDataAdapter()
120120
public class GxDb2ISeries : GxDataRecord
121121
{
122122

123-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
123+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<GxDb2ISeries>();
124124
private bool m_UseCharInDate;
125125
public static string SQL_NULL_DATE="00000000";
126126
private string m_InitialCatalog;
@@ -767,7 +767,7 @@ public override string ToDbmsConstant(DateTime Value)
767767
}
768768
sealed internal class Db2ISeriesHISConnectionWrapper : GxAbstractConnectionWrapper
769769
{
770-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
770+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<Db2ISeriesHISConnectionWrapper>();
771771
public Db2ISeriesHISConnectionWrapper() : base(new MsDb2Connection())
772772
{ }
773773

@@ -826,7 +826,7 @@ public override DbDataAdapter CreateDataAdapter()
826826
public class GxISeriesHIS : GxDataRecord
827827
{
828828

829-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
829+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<GxISeriesHIS>();
830830
private bool m_UseCharInDate;
831831
private string m_InitialCatalog;
832832
private string m_SqlPackage;

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataHana.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace GeneXus.Data
1313
{
1414
public class GxHana : GxDataRecord
1515
{
16-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
16+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<GxHana>();
1717
static Assembly _hanaAssembly;
1818
const string HanaDbTypeEnum = "Sap.Data.Hana.HanaDbType";
1919
#if NETCORE
@@ -320,7 +320,7 @@ sealed internal class HanaConnectionWrapper : GxAbstractConnectionWrapper
320320
{
321321
const string HanaIsolationEnum = "Sap.Data.Hana.HanaIsolationLevel";
322322

323-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
323+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<HanaConnectionWrapper>();
324324
public HanaConnectionWrapper()
325325
{
326326
try

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataInformix.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace GeneXus.Data
1818
{
1919
public class GxInformix : GxDataRecord
2020
{
21-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
21+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<GxInformix>();
2222
static Assembly _ifxAssembly;
2323
#if NETCORE
2424
internal static string InformixAssemblyName = "Informix.Net.Core";
@@ -584,7 +584,7 @@ sealed internal class InformixConnectionWrapper : GxAbstractConnectionWrapper
584584
{
585585
private static int changeConnState = -1;
586586
private int openDataReaders;
587-
static readonly IGXLogger log = GXLoggerFactory.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);
587+
static readonly IGXLogger log = GXLoggerFactory.GetLogger<InformixConnectionWrapper>();
588588
public InformixConnectionWrapper()
589589
{
590590
try

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataMysqlConnector.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Data;
34
using System.Data.Common;
45
using System.Reflection;
@@ -570,7 +571,7 @@ public GxMySQLConnectorDataReader(IGxConnectionManager connManager, GxDataRecord
570571
reader = cmd.ExecuteReader();
571572
cache.SetAvailableCommand(stmt, false, dynStmt);
572573
open = true;
573-
block = new GxArrayList(fetchSize);
574+
block = new List<object[]>(fetchSize);
574575
pos = -1;
575576
if (cached)
576577
{
@@ -622,7 +623,7 @@ public GxMySQLConnectorCursorDataReader(IGxConnectionManager connManager, GxData
622623
reader = cmd.ExecuteReader();
623624
cache.SetAvailableCommand(stmt, false, dynStmt);
624625
open = true;
625-
block = new GxArrayList(fetchSize);
626+
block = new List<object[]>(fetchSize);
626627
pos = -1;
627628
if (cached)
628629
{

Diff for: dotnet/src/dotnetframework/GxClasses/Data/GXDataMysqlDriverCS.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Data;
34
using System.Data.Common;
45
using System.Text;
@@ -497,7 +498,7 @@ public GxMySQLDriverCSDataReader(IGxConnectionManager connManager, GxDataRecord
497498
reader = cmd.ExecuteReader();
498499
cache.SetAvailableCommand(stmt, false, dynStmt);
499500
open = true;
500-
block = new GxArrayList(fetchSize);
501+
block = new List<object[]>(fetchSize);
501502
pos = -1;
502503
if (cached)
503504
{
@@ -542,7 +543,7 @@ public GxMySQLDriverCSCursorDataReader(IGxConnectionManager connManager, GxDataR
542543
reader = cmd.ExecuteReader();
543544
cache.SetAvailableCommand(stmt, false, dynStmt);
544545
open = true;
545-
block = new GxArrayList(fetchSize);
546+
block = new List<object[]>(fetchSize);
546547
pos = -1;
547548
if (cached)
548549
{

0 commit comments

Comments
 (0)