Лично я бы не стал беспокоиться об оптимизации конверсий int
-> double
, это, как правило, меньше всего беспокоит вас по поводу производительности. Да, они могут складываться, но вам нужно много работать в тесном цикле или что-то подобное.
Я бы придерживался Math.Ceiling()
, поскольку совершенно очевидно, что вы пытаетесь сделать, и, следовательно, его легче поддерживать. Если вы обнаружите, что ваш код работает медленно, то сначала оптимизируйте и атакуйте самые большие проблемы.
Синхронизация этих более чем 1 миллиардов итераций составляет 8 677 мс для лямбды и 9 749 мс для Math.Ceiling()
, но это 0,0000087 мс против 0,0000097 мс на вызов, что незначительно.