用Java设计高性能状态机

用Java设计高性能状态机,第1张

用Java设计高性能状态机

那么,您希望它多快? brics.dk/automaton 上的代码确实声明了自己的 StateTransition
类,显然,可以使用基元重写它们(很显然,整个 Transition 类的状态显然很容易适合

long
)。

事情是,如果你移动,例如,

Transition
类只是一个原始的,那么你就不会被迫再使用缓慢的
HashMap<Transition,...>
默认Java集合:您可以使用库,例如特罗韦的
TLongObjectHashMap
(或者
TLongInt
…或者
TLongLong
,无论)这
拥有
的默认的
HashMap
重要时间(在使用基元时,Trove库基本上提供了高效且快速的小型映射和集:您不会生成无数的垃圾,也不会不断地在基元周围进行不必要的包装,因此不会减少GC等。重新进入性能,那么您确实要检查Trove
…并且即将推出的3.0版本比Trove 2.0快20%。

但这真的有用吗?显然,该库已经足够快了。毫无疑问,可以通过不浪费创建对象并使用实际运行良好的集合来提高它的速度,但尚不清楚这是否可取。

除此之外,我很确定上面的库不是线程安全的。State构造函数通过执行以下 *** 作来创建唯一的ID:

static int next_id;...id = next_id++;

然后从90个不同的地方调用该构造函数

在多线程方案中 创建唯一ID 的方法的教科书示例(哎呀,甚至使

next_id
volatile 都不够,您想要在这里使用
AtomicInteger )。我对图书馆不太了解,但是这个ID东西对我来说似乎 非常 可疑。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4989727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存