Да, я не читал каждую последнюю строку, но похоже, что вы просто:
- генерируете случайные целые числа
- сохраняя их как
double
s - добавление их
- добавление и умножение их
IOW - я не вижу использования дроби вообще и целого числа соответствующего размерабудет лучше.Если это так, вы можете удалить все FLOP в программе;)
Если это не точный сигнал, вы все равно можете использовать его в соответствующем диапазоне, а затем просто увеличить масштаб сигнала, сохранить в виде целого числа изатем доведите результат до нужного диапазона в некоторых случаях.
Для mul / add соответствующего размера использование целых чисел будет намного быстрее и, возможно, потребует гораздо меньше памяти - вы также можете применять к ним SIMD-инструкции.
Кроме того, улучшение локальности кэша, минимизация ветвлений и минимизация динамических распределений также могут сделать программу в несколько раз быстрее.