64ビットキーでマップを実装する適切な方法は何かを知る必要があります。あまりにも多くのアイテムがあるわけではありません。十分な大きさのアドレス空間を持つさまざまなものに対して、さまざまなキーを使用するだけで済みます。とても速くする必要があります。String
キーが遅すぎる可能性があります。これまでのところ私が試した:Haxe - シリアル化可能なInt64キー(ネイティブターゲット)を使用してマップを実装する適切な方法
import haxe.Int64;
import haxe.Unserializer;
import haxe.Serializer;
class Test {
static function main() {
var key:Int64 = 1 << 63 | 0x00000001;
var omap:Map<Int64, String> = new Map<Int64, String>();
omap.set(key, "test");
var smap:Map<Int64, String> = Unserializer.run(Serializer.run(omap));
var key2:Int64 = 1 << 63 | 0x00000001;
trace(key+" "+smap.get(key2));
}
}
、haxe.Int64
は、オブジェクトのインスタンスを作成するため。 cpp.Int64
を使うと何らかの理由で私のcppコードで32ビット整数に戻ってしまい、何が間違っているのかわからないからです。私はそれを64ビットに "強制"することができますか、それとも別の方法で行うべきですか?
あなたは、キーの数が少ないだろうと述べたが、あなたのユースケースのためにOK線形検索のですか? 'haxe.ds.BalancedTree'やカスタムマップ(線形検索を行う確率が低い)がうまく動作しないでしょうか? –
@jonasmalacofilhoおそらく、ありがとうと思います。 – wildfireheart