在转换为php </int,int>时,在Haxe中是否有更快的替代Map <int,int>

时间:2014-03-28 17:44:48

标签: optimization haxe

HAXE

public var bonus:Map<Int,Int>;

if (bonus.exists(id))
    score += bonus.get(id);

编译为以下php

if($bonus->exists($id))
    $score += $bonus->get($id);

理想情况下,我喜欢haxe来生成

if(isset($bonus[$id]))
    $score += $bonus[$id];

我怀疑使用动态是可能的,但是我希望避免使用动态,因为不推荐使用动态。在PHP中存在是不必要的,但不会为我们的as3目标编译。目前的分析显示存在(执行时间的50%)和获得(30%)非常昂贵。我希望能够使用内置数组类型或者至少内联存在和获取调用。任何人都可以告诉我如何或建议更好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

对于PHP的isset(),您可以简单地将变量与null进行比较,即。 &#34; myVar!= null&#34;。

if(bonus[id] != null)
    score += bonus[id];

或使用三元运算符

score += (bonus[id] != null) ?: bonus[id];

旁注:

我相信,您也可以使用in_array()尝试PHP Lambda.has(arrayOrMap, "key");解决方案。但我并不确切知道Lambda.has是否适用于地图。

但是,!=仍然比调用in_array()更快。