Почему моя программа на C++ работает так медленно при переключении с long double на float128?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему моя программа на C++ работает так медленно при переключении с long double на float128?

Сообщение Anonymous »

Мне нужно преобразовать мою программу на C++, которая на данный момент использует long double (в моем случае с мантиссой 64 бита), в программу, использующую тип __float128 (с мантиссой 113 бит). Для этого я использовал пакет libquadmath0 и библиотеку boost:

Код: Выделить всё

// g++ --std=c++11 main.cc -o main -lgmp -lquadmath -Ofast -m64
#include 
#include 
#include 
#include 
#include 
extern "C" {
#include 
}
#include 
#include 
#include 
#include 

using namespace boost::multiprecision;
using namespace std;

typedef __float128 long_double_t;

void main()
{
...
}
...но результирующая программа работает в 10~20 раз медленнее, чем при использовании long double.
Это сбивает с толку, так как размер мантиссы ненамного больше, и я не наблюдал такой разницы при переключении с double на long double. Нормальна ли эта разница во времени, и если нет, как ее исправить?
Я программирую на Unix, используя компилятор g++ 4.8.2.

Подробнее здесь: https://stackoverflow.com/questions/263 ... o-float128
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»