Я часто вижу код, который преобразует ints в doubles в ints, чтобы удваивать и снова (иногда по уважительным причинам, иногда нет), и мне просто пришло в голову, что это похоже на «скрытую» стоимость в моей программе. Предположим, что метод преобразования является усечением.Как дорого конвертировать между int и double?
Итак, насколько это дорого? Я уверен, что это зависит от аппаратного обеспечения, поэтому давайте предположим, что новый процессор Intel (Haswell, если хотите, хотя я возьму что-нибудь). Некоторые метрики я был бы заинтересован в (хотя хороший ответ не нужно иметь все из них):
- # сгенерированных инструкций
- # циклов, используемых
- Относительная стоимость по сравнению с основными арифметическими операциями
Я также предполагал, что способ, которым мы наиболее остро ощущаем влияние медленного преобразования, будет касаться использования энергии, а не скорости выполнения, учитывая разницу в количестве вычислений, которые мы можем выполнять каждую секунду относительно того, как многие данные могут CPU каждую секунду.
Это не имеет смысла обсуждать без конкретной системы. Во-первых, некоторые системы даже не имеют FPU. – Lundin
[конверсии с плавающей запятой и производительность] (http://stackoverflow.com/q/12920700/995714), [Как ускорить преобразование с плавающей точкой в целочисленное число?] (Http://stackoverflow.com/q/429632/995714), [Что является самым быстрым способом преобразования float в int на x86] (http://stackoverflow.com/q/78619/995714), [Применяет ли приведение типов дополнительные циклы процессора] (http://stackoverflow.com/q/16539412/995714) –