diff options
| author | Bond_009 <bond.009@outlook.com> | 2021-01-12 15:28:02 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2021-01-12 15:28:02 +0100 |
| commit | 1ea2b200c0b38f9d9a058f5e4b6e27815a016860 (patch) | |
| tree | d036e97576d8ea45d6e397257f4364aef163e32c /Emby.Server.Implementations/Channels/ChannelManager.cs | |
| parent | aaf889f683a92b4c41c54505d91d96b902709843 (diff) | |
JsonSerializer deserialize from bytes where possible
This is faster and uses way less memory
```
BenchmarkDotNet=v0.12.1, OS=fedora 32
Intel Core i7-6700HQ CPU 2.60GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100
[Host] : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
DefaultJob : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|------- |---------:|--------:|--------:|--------:|------:|------:|----------:|
| Bytes | 158.4 us | 2.56 us | 2.14 us | 16.8457 | - | - | 52.08 KB |
| String | 172.8 us | 0.78 us | 0.70 us | 41.5039 | - | - | 127.82 KB |
| Custom | 155.5 us | 2.95 us | 2.76 us | 10.0098 | - | - | 31.27 KB |
```
Diffstat (limited to 'Emby.Server.Implementations/Channels/ChannelManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Channels/ChannelManager.cs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs index 2d5b19fa6..8c5fa09f6 100644 --- a/Emby.Server.Implementations/Channels/ChannelManager.cs +++ b/Emby.Server.Implementations/Channels/ChannelManager.cs @@ -336,19 +336,19 @@ namespace Emby.Server.Implementations.Channels return GetChannel(GetInternalChannelId(channel.Name)) ?? GetChannel(channel, CancellationToken.None).Result; } - private List<MediaSourceInfo> GetSavedMediaSources(BaseItem item) + private MediaSourceInfo[] GetSavedMediaSources(BaseItem item) { var path = Path.Combine(item.GetInternalMetadataPath(), "channelmediasourceinfos.json"); try { - var jsonString = File.ReadAllText(path, Encoding.UTF8); - return JsonSerializer.Deserialize<List<MediaSourceInfo>>(jsonString, _jsonOptions) - ?? new List<MediaSourceInfo>(); + var bytes = File.ReadAllBytes(path); + return JsonSerializer.Deserialize<MediaSourceInfo[]>(bytes, _jsonOptions) + ?? Array.Empty<MediaSourceInfo>(); } catch { - return new List<MediaSourceInfo>(); + return Array.Empty<MediaSourceInfo>(); } } |
