私は数日間MINGWの下にGMPライブラリをインストールしようとしてきました。私は週数__uint128_t
をlinux64ビット環境下でgccで使用していましたが、GMPとmingw(32ビット版)の下で同じプログラムを移植しました。 __uint128_t
の代わりにmpz_class
の整数を使用しました。それから、私は新しいプログラムを始めて...! __uint128_t
と64ビットで完了するまでに16分かかり、GMPとMINGWでは91時間かかる!gmpで固定サイズの整数...?
少しスピードアップするにはどうすればよいですか? 32ビット環境下で128ビットの整数演算を高速化する方法はありますか?私は128ビット以上は必要ないので、GMPに "何かを伝える方法はありますか?いいえ、私はちょうど128ビットが必要です。
128ビットでどのような操作を行う必要がありますか? ( '+'、 '-'、' <'/'> '、' * '、'/'、もっと興味深いものです) – osgx
64ビットはコンパイラによってネイティブにサポートされています。 32ビット単位を使用して64ビット算術演算を行うコードを見つけ、64ビット単位を使用して128ビット単位に対してそれを実装するための原則を使用します。これはネイティブの128ビットサポート(例えばSSEで手に入れることができるかもしれませんが)ほど速くはありませんが、おそらくlibgmpより速いでしょう。 – user786653
64ビットはコンパイラでサポートされていますが、除算(およびモジュロ)や乗算のようなものは、実際の64ビット環境(IOW、64ビットレジスタなど)ではるかに高速です。 –