C2Xdouble X(1000,1000);
Print("X(100,100).SizeOF() = ",X.SizeOf());
// добавил в ваши классы вычисление размера
-----
C2DMagicArray MA(1000,1000);
Print("MA(100,100).SizeOF() = ",sizeof(MA)+MA.SizeOf());
// это мой. у меня MA.SizeOf() возвращает только размер чистого буфера, поэтому по честному добавил размер класса. :)
そこで、1つ目の疑問があります。
user32.dllなどの32ビットDLLから64アプリケーションに関数をインポート するにはどうしたらよいですか?それとも、その名前でシステム内にコピーがあり、OOPスペースが作成されるのでしょうか?
まず、x64システムでは、x86プログラムの起動をエミュレートしています。問題は、x86でx64のプログラムを実行する方法です。
もしかしたら、質問は端末のことではなく、これらのDLLのトリッキーなコンパイルについてかもしれませんね。
DLLはWindowsのAPIを利用しています。例えば、32/64ビット端末ではuser32,kernel32, winmm, wininetです。
問題の解決は、別のところにあるようだ。
問題は、x86でx64のプログラムを実行する方法です。
もしかしたら、この質問は端末のことではなく、これらのDLLのトリッキーなコンパイルのことかもしれませんね。
例えば、user32, kernel32, winmm, wininetは32/64bitのターミナルで動作します。
この問題の解決は、別のところにありそうだ。
ですから、理論的には32ビットDLLをそこそこ動作させることができるかもしれません。
もしかしたら、開発者に連絡する時期かもしれませんね。
もしかしたら、もっと狡猾なコンパイル方法があるのかもしれません // x64で「素朴な」方法でコンパイルした32bit DLLで作業を中断しました。 とにかく、「ある」前例があるのです(c).
例えば、32/64ビット端末では、user32、kernel32、winmm、wininetなど。
だからその例えでやれよ!大したことないだろ!...と。:-))
見てみるよ。;)
あなたのケースに合わせた最もシンプルなバージョンです。
まあ、一番単純なケースとしては、クレジット。「あなたを書いています」 :)
記憶からですが、それに比べれば惜しくはないですね。
の結果です。
その差は6倍、フロートバッファを考慮すると-3倍です。 // クラス記述子のシステムテーブルは(この例では)1000*1000+1000ですが、私のは1です(!)。
スピードはほとんど変わりません。
縮んでしまうのでしょうか?;)
--
嘘です、あなたのサブクラスはすべてスタティックなので、暗黙の強盗はちょっと大げさです。掻い摘んで言うと:)
もしかしたら、開発者に連絡する時期かもしれませんね。
x86(32ビット)プロセス用のシステムライブラリ関数は、特殊なラッパーを経由してx64に渡され、実行されてx86に戻される。
簡単に説明すると
x86(32ビット)プロセス用のシステムライブラリ関数は、特別なラッパーを持ち、それを介してx64に転送され、実行されてx86に戻される。
情報をありがとうございました。
自分でも同じようにできる方法を教えてください。 リンクだけでも(あれば)。
縮んでしまうのでしょうか?;)
いいえ、私は可能な限り一次元の配列を使います。
OKです。この場合、最適化の問題は二の次です。 とにかく偉業は守られます。
--
次のような問題を提供することができます。
配列は任意の次元を持つ(わかりやすくするために^16に限定しておく)。
次元数は、通常の配列と同様に、作成時にパラメータの数で設定する。
XXArray xx2(5,7), xx5(12,12,16,16,8);
すべての次元のインデクサ(A[i][j][k][n][m]...)で動作するはずです。