2
Ada(配列の配列)に大きな配列を動的に割り当てようとしています。例えば 、私は動的にそうようにオブジェクトを割り当てることができるよ:Adaでのレコードの動的配列割り当て
type Object;
type ObjPtr is access Object;
OP : ObjPtr;
-- sometime later
OP := new Object;
OP.Index := I;--OP.Ptr.all;
Free(OP);
私はこのベンチマークのコードをエミュレートしようとしています:悲しいこと
Object **objList = new Object*[500000];
int32_t *iList = new int32_t[500000];
for (int32_t i = 0; i < 500000; ++i)
{
objList[i] = new Object;
iList[i] = Object::getIndex(objList[i]);
delete objList[i];
}
delete[] iList;
delete[] objList;
を、私も何かをすることができませんよこのようなC++相当するものは:
Object *objList = new Object*[500000];
私はずっとこれまでのところ、この思い付いた:
type objs is array (Positive range <>) of Object;
type objList is access objs;
しかし、私はおそらくオフです。
あなたのC++のコードは次のようにほぼ変換するでしょうエイダで
配列の配列はどこですか? – Schedler
「ベンチマーク」とは何ですか? Schedlerはこれを行う方法を示していますが、Adaで実際にこのようなことを行う必要はほとんどありません(そして、C++でも避けてください)。また、おそらくAdaの 'new'はC++の' new'とまったく同じOSルーチンへの呼び出しとして実装されています。したがって、動的割り当てパフォーマンスをベンチマークすることは、無意味でも愚かでもありません。 –