瀏覽代碼

Some minor cleanups and optimizations (#4174)

* Replace Array.Clear(x, 0, x.Length) with Array.Clear(x)

* Use DateTime.UnixEpoch field

* Replace SHA256.ComputeHash calls with static SHA256.HashData call

More performant and avoids the need to initialize a SHA256 instance.
Berkan Diler 3 年之前
父節點
當前提交
37d27c4c99

+ 1 - 1
ARMeilleure/Translation/SsaConstruction.cs

@@ -140,7 +140,7 @@ namespace ARMeilleure.Translation
                     }
                 }
 
-                Array.Clear(localDefs, 0, localDefs.Length);
+                Array.Clear(localDefs);
             }
         }
 

+ 1 - 3
Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfile.cs

@@ -4,8 +4,6 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
 {
     public class UserProfile
     {
-        private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-
         public UserId UserId { get; }
 
         public long LastModifiedTimestamp { get; set; }
@@ -83,7 +81,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
 
         private void UpdateLastModifiedTimestamp()
         {
-            LastModifiedTimestamp = (long)(DateTime.Now - Epoch).TotalSeconds;
+            LastModifiedTimestamp = (long)(DateTime.Now - DateTime.UnixEpoch).TotalSeconds;
         }
     }
 }

+ 13 - 16
Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs

@@ -100,27 +100,24 @@ namespace Ryujinx.HLE.HOS.Services.Caps
                     Unknown0x1f       = 1
                 };
 
-                using (SHA256 sha256Hash = SHA256.Create())
-                {
-                    // NOTE: The hex hash is a HMAC-SHA256 (first 32 bytes) using a hardcoded secret key over the titleId, we can simulate it by hashing the titleId instead.
-                    string hash       = BitConverter.ToString(sha256Hash.ComputeHash(BitConverter.GetBytes(titleId))).Replace("-", "").Remove(0x20);
-                    string folderPath = Path.Combine(_sdCardPath, "Nintendo", "Album", currentDateTime.Year.ToString("00"), currentDateTime.Month.ToString("00"), currentDateTime.Day.ToString("00"));
-                    string filePath   = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
+                // NOTE: The hex hash is a HMAC-SHA256 (first 32 bytes) using a hardcoded secret key over the titleId, we can simulate it by hashing the titleId instead.
+                string hash       = BitConverter.ToString(SHA256.HashData(BitConverter.GetBytes(titleId))).Replace("-", "").Remove(0x20);
+                string folderPath = Path.Combine(_sdCardPath, "Nintendo", "Album", currentDateTime.Year.ToString("00"), currentDateTime.Month.ToString("00"), currentDateTime.Day.ToString("00"));
+                string filePath   = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
 
-                    // TODO: Handle that using the FS service implementation and return the right error code instead of throwing exceptions.
-                    Directory.CreateDirectory(folderPath);
+                // TODO: Handle that using the FS service implementation and return the right error code instead of throwing exceptions.
+                Directory.CreateDirectory(folderPath);
 
-                    while (File.Exists(filePath))
-                    {
-                        applicationAlbumEntry.AlbumFileDateTime.UniqueId++;
+                while (File.Exists(filePath))
+                {
+                    applicationAlbumEntry.AlbumFileDateTime.UniqueId++;
 
-                        filePath = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
-                    }
-                
-                    // NOTE: The saved JPEG file doesn't have the limitation in the extra EXIF data.
-                    Image.LoadPixelData<Rgba32>(screenshotData, 1280, 720).SaveAsJpegAsync(filePath);
+                    filePath = GenerateFilePath(folderPath, applicationAlbumEntry, currentDateTime, hash);
                 }
 
+                // NOTE: The saved JPEG file doesn't have the limitation in the extra EXIF data.
+                Image.LoadPixelData<Rgba32>(screenshotData, 1280, 720).SaveAsJpegAsync(filePath);
+
                 return ResultCode.Success;
             }
 

+ 1 - 3
Ryujinx.HLE/HOS/Services/Pcv/Bpc/IRtcManager.cs

@@ -24,9 +24,7 @@ namespace Ryujinx.HLE.HOS.Services.Pcv.Bpc
         public static ResultCode GetExternalRtcValue(out ulong rtcValue)
         {
             // TODO: emulate MAX77620/MAX77812 RTC
-            DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-
-            rtcValue = (ulong)(DateTime.Now.ToUniversalTime() - unixEpoch).TotalSeconds;
+            rtcValue = (ulong)(DateTime.Now.ToUniversalTime() - DateTime.UnixEpoch).TotalSeconds;
 
             return ResultCode.Success;
         }

+ 1 - 6
Ryujinx.HLE/HOS/Services/Ro/IRoInterface.cs

@@ -142,14 +142,9 @@ namespace Ryujinx.HLE.HOS.Services.Ro
 
             _owner.CpuMemory.Read(nroAddress, nroData);
 
-            byte[] nroHash = null;
-
             MemoryStream stream = new MemoryStream(nroData);
 
-            using (SHA256 hasher = SHA256.Create())
-            {
-                nroHash = hasher.ComputeHash(stream);
-            }
+            byte[] nroHash = SHA256.HashData(stream);
 
             if (!IsNroHashPresent(nroHash))
             {

+ 1 - 3
Ryujinx.HLE/HOS/Services/Time/Clock/Types/TimeSpanType.cs

@@ -10,8 +10,6 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock
 
         public static readonly TimeSpanType Zero = new TimeSpanType(0);
 
-        private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-
         public long NanoSeconds;
 
         public TimeSpanType(long nanoSeconds)
@@ -31,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock
 
         public bool IsDaylightSavingTime()
         {
-            return UnixEpoch.AddSeconds(ToSeconds()).ToLocalTime().IsDaylightSavingTime();
+            return DateTime.UnixEpoch.AddSeconds(ToSeconds()).ToLocalTime().IsDaylightSavingTime();
         }
 
         public static TimeSpanType FromSeconds(long seconds)