Don't cast to TimeSpan
- just take the Ticks
and divide by NodaConstants.TicksPerSecond
. It's an integer division, and likely to be very, very quick. Given that 107 isn't a power of two (or particularly neatly represented as combinations of them) I suspect you'd be best off just dividing.
I'd be surprised if this division really proved to be a bottleneck in your code. While I'm trying to keep Noda Time quick, I'm not above performing a division or two where appropriate :)
If you need partial seconds, I'd be tempted to just divide by TicksPerMillisecond
instead, and use an integer number of milliseconds rather than using floating-point arithmetic. If you already need a double
elsewhere, of course, that's not going to help much.