struct TimeSpan {
long ticks;
const int TicksPerSecond = 10000000;
const int TicksPerMillisecond = 10000;
public double TotalMilliseconds {
get {
return ticks / (double)TicksPerMillisecond;
}
}
static void Main()
{
TimeSpan foo, bar;
// this value uses 30 bits
foo.ticks = 1000000000L;
bar.ticks = foo.ticks + 10;
System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds);
// this value uses 50 bits
foo.ticks = 1000000000000000L;
bar.ticks = foo.ticks + 10;
System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds);
// this value uses 60 bits
foo.ticks = 1000000000000000000L;
bar.ticks = foo.ticks + 10;
System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds);
}
}
c3RydWN0IFRpbWVTcGFuIHsKICAgIGxvbmcgdGlja3M7CiAgICBjb25zdCBpbnQgVGlja3NQZXJTZWNvbmQgPSAxMDAwMDAwMDsKICAgIGNvbnN0IGludCBUaWNrc1Blck1pbGxpc2Vjb25kID0gMTAwMDA7CgogICAgcHVibGljIGRvdWJsZSBUb3RhbE1pbGxpc2Vjb25kcyB7CiAgICAgICBnZXQgewogICAgICAgICAgIHJldHVybiB0aWNrcyAvIChkb3VibGUpVGlja3NQZXJNaWxsaXNlY29uZDsKICAgICAgIH0KICAgIH0KCiAgICBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKICAgICAgICBUaW1lU3BhbiBmb28sIGJhcjsKCiAgICAgICAgLy8gdGhpcyB2YWx1ZSB1c2VzIDMwIGJpdHMKICAgICAgICBmb28udGlja3MgPSAxMDAwMDAwMDAwTDsKICAgICAgICBiYXIudGlja3MgPSBmb28udGlja3MgKyAxMDsKICAgICAgICBTeXN0ZW0uQ29uc29sZS5Xcml0ZUxpbmUoIkRlbHRhOiB7MDowLjAwMDB9bXMiLCBiYXIuVG90YWxNaWxsaXNlY29uZHMgLSBmb28uVG90YWxNaWxsaXNlY29uZHMpOwoKICAgICAgICAvLyB0aGlzIHZhbHVlIHVzZXMgNTAgYml0cwogICAgICAgIGZvby50aWNrcyA9IDEwMDAwMDAwMDAwMDAwMDBMOwogICAgICAgIGJhci50aWNrcyA9IGZvby50aWNrcyArIDEwOwogICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgiRGVsdGE6IHswOjAuMDAwMH1tcyIsIGJhci5Ub3RhbE1pbGxpc2Vjb25kcyAtIGZvby5Ub3RhbE1pbGxpc2Vjb25kcyk7CgogICAgICAgIC8vIHRoaXMgdmFsdWUgdXNlcyA2MCBiaXRzCiAgICAgICAgZm9vLnRpY2tzID0gMTAwMDAwMDAwMDAwMDAwMDAwMEw7CiAgICAgICAgYmFyLnRpY2tzID0gZm9vLnRpY2tzICsgMTA7CiAgICAgICAgU3lzdGVtLkNvbnNvbGUuV3JpdGVMaW5lKCJEZWx0YTogezA6MC4wMDAwfW1zIiwgYmFyLlRvdGFsTWlsbGlzZWNvbmRzIC0gZm9vLlRvdGFsTWlsbGlzZWNvbmRzKTsKICAgIH0KfQ==