Короткая версия, "нет".
Эта статья древняя и даже не относится к современным системам x86, не говоря уже о ARM. Простое приведение к целому числу достаточно быстро на ARMv7 (iPhone 3GS / 4), хотя и происходит скромное смещение данных из регистров VFP / NEON в регистры общего назначения. Однако, учитывая, что ваши float
данные, вероятно, поступают из вычислений, выполненных в регистрах VFP / NEON, вам придется платить за этот шаг независимо от того, как вы выполняете преобразование.
Я не думаю, что это выгодный путь для оптимизации, если у вас нет следов, показывающих, что это является основным узким местом для вашей программы. Даже тогда самое быстрое преобразование - это преобразование, которое вы не делаете; вам почти всегда будет выгоднее найти алгоритмические способы исключения конверсий из вашей программы.
Если вам действительно нужно оптимизировать преобразования, посмотрите на инструкцию vcvt.i32.f32
, которая преобразует вектор из двух или четырех чисел с плавающей запятой в вектор из двух или четырех целых чисел без перемещение данных из регистров NEON (и, следовательно, без остановки, о которой я говорил). Конечно, вам нужно будет выполнить последующие целочисленные вычисления на устройстве NEON, чтобы это было выгодной оптимизацией.
Вопрос: Что вы действительно пытаетесь сделать? Как вы думаете, почему вам нужно более быстрое преобразование с плавающей точкой -> int?