栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Java设计高性能状态机

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用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东西对我来说似乎 非常 可疑。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394909.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号