using System;
using System.Diagnostics;
class Program
{
static void Foo(Action action)
{
var s = Stopwatch.StartNew();
for (int i = 0; i < _max; i++) { action(); }
s.Stop();
Console.WriteLine(((double)(s.Elapsed.TotalMilliseconds * 1000 * 1000) / _max).ToString("0.00 ns"));
}
const int _max = 100000000;
static void Main()
{
Foo(Method1);
Foo(Method2);
// for cache effects
Foo(Method2);
Foo(Method1);
}
static void Method1()
{
Method3(flag: true, size: 1, name: "Perl");
}
static void Method2()
{
Method3(1, "Perl", true);
}
static void Method3(int size, string name, bool flag)
{
if (!flag && size != -1 && name != null)
{
throw new Exception();
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpjbGFzcyBQcm9ncmFtCnsKCXN0YXRpYyB2b2lkIEZvbyhBY3Rpb24gYWN0aW9uKQoJewoJCXZhciBzID0gU3RvcHdhdGNoLlN0YXJ0TmV3KCk7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBfbWF4OyBpKyspIHsgYWN0aW9uKCk7IH0KCQlzLlN0b3AoKTsKCQlDb25zb2xlLldyaXRlTGluZSgoKGRvdWJsZSkocy5FbGFwc2VkLlRvdGFsTWlsbGlzZWNvbmRzICogMTAwMCAqIDEwMDApIC8gX21heCkuVG9TdHJpbmcoIjAuMDAgbnMiKSk7Cgl9CgoJY29uc3QgaW50IF9tYXggPSAxMDAwMDAwMDA7CglzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlGb28oTWV0aG9kMSk7CgkJRm9vKE1ldGhvZDIpOwoKCQkvLyBmb3IgY2FjaGUgZWZmZWN0cwoJCUZvbyhNZXRob2QyKTsKCQlGb28oTWV0aG9kMSk7Cgl9CgoJc3RhdGljIHZvaWQgTWV0aG9kMSgpCgl7CgkJTWV0aG9kMyhmbGFnOiB0cnVlLCBzaXplOiAxLCBuYW1lOiAiUGVybCIpOwoJfQoKCXN0YXRpYyB2b2lkIE1ldGhvZDIoKQoJewoJCU1ldGhvZDMoMSwgIlBlcmwiLCB0cnVlKTsKCX0KCglzdGF0aWMgdm9pZCBNZXRob2QzKGludCBzaXplLCBzdHJpbmcgbmFtZSwgYm9vbCBmbGFnKQoJewoJCWlmICghZmxhZyAmJiBzaXplICE9IC0xICYmIG5hbWUgIT0gbnVsbCkKCQl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oKTsKCQl9Cgl9Cn0=