View ToYieldInstruction.cs
public void Test()
{
Observable.ReturnUnit()
.SelectMany(_ => Observable.FromCoroutine(x => NestedCoroutine(x)))
.Subscribe(_ => Debug.Log("Very Good:)"));
}
IEnumerator NestedCoroutine(CancellationToken cancel)
{
yield return Observable.Timer(System.TimeSpan.FromSeconds(1))
View UnityDebugLogger.cs
using Grpc.Core.Logging;
using System;
namespace MagicOnion
{
public class UnityDebugLogger : ILogger
{
readonly Type forType;
readonly string forTypeString;
View flatmaplike.cs
using System;
using System.Collections.Generic;
class Base { }
class A : Base { }
class B : Base { }
class Program
{
View WirePerfTestResult.md

Test LargeStructTest

Running cold

ZeroFormatter
   Serialize                      45 ms
   Deserialize                    40 ms
   Size                           32 bytes
   Total                          85 ms
View code.cs
private void SerializeZeroFormatter()
{
var bytes = ZeroFormatter.ZeroFormatterSerializer.Serialize(Value);
RunTest("ZeroFormatter", () =>
{
ZeroFormatter.ZeroFormatterSerializer.Serialize(Value);
}, () =>
{
ZeroFormatter.ZeroFormatterSerializer.Deserialize<T>(bytes);
}, bytes.Length);
View ZeroFormatter-Wire.txt
Warming-up
ZeroFormatter
ZeroFormatter
ZeroFormatter
ZeroFormatter
ZeroFormatter
ZeroFormatter
Wire
Wire
View result.txt
Warming-up
ZeroFormatter
ZeroFormatter
protobuf-net
protobuf-net
MsgPack-CLI
MsgPack-CLI
JSON.NET
JSON.NET
View ZeroFormatterBenchmark.cs
// Install-Package MsgPack.Cli
// Install-Package Newtonsoft.Json
// Install-Package protobuf-net
// Install-Package ZeroFormatter
using MsgPack.Serialization;
using Newtonsoft.Json;
using ProtoBuf;
using System;
using System.Collections.Generic;
View SerializerPerformance.cs
using MsgPack.Serialization;
using ProtoBuf;
using System;
using System.Diagnostics;
using System.IO;
using ZeroFormatter;
// スーパー雑雑クラス。
[ZeroFormattable]
View AwaitObservable.cs
async Task AwaitObservable()
{
Debug.Log("start await observable");
await Observable.NextFrame(); // like yield return null
await Observable.TimerFrame(5); // await 5 frame
try
{
// ObservableWWW promote exception when await(difference in await WWW)
var result = await ObservableWWW.Get("https://404.com");
Debug.Log(result);