首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Java 优化技术(1)

Java 优化技术(1)

大多数关于 Java 性能的文章主要讨论程序员用什么技术来加快程序的运行速度。在这些方法中,一端是对简单的编程习惯用法的描述,如         StringBuffer 类的使用。在另一端,您会发现更高级技术的讨论,如对象高速缓存的使用。我们将展示一个组合这些技术来加速解拼图程序的实际示例,而不是向这一系列技术中添加新技术。      
我们将开发和优化的程序会计算出 Meteor 拼图所有可能的解决方案,Meteor 拼图是一种由 10 个拼图块构成的智力游戏,每种不同的颜色由 5 个六边形(正六边形)组成。拼图板自身是由按 5 乘 10 模式排列的 50 个六边形组成的矩形格子。通过使用 10 个可用块覆盖整个板来拼出该拼图。图 1 中显示了该拼图的一种可能的解决方案。
Eternity 拼图虽然本文中讨论的 Java 程序解决 10 块 Meteor 拼图,但真实目的是为了解决更大的称为 Eternity 拼图的 209 块拼图,该拼图是由 Christopher Monckton 设计的并在 1999 年 6 月在英国作了介绍。发布 Eternity 拼图的同时,Monckton 发布了各种小拼图:Meteor、Delta 和 Heart。通过解决任何这些拼图,玩家可以通过邮件获取各种线索中的一种,这些线索显示 Eternity 网格特定块在 Monckton 解决方案中的位置。第一个解出 Eternity 拼图的人将获得一百万英镑(约合一百五十万美元),该奖金最后由 Alex Selby 和 Oliver Riordan 于 2000 年 5 月 15 日获得。后来 Guenter Stertenbrink 找到了第二种解决方案。有趣的是,这些解决方案都没有采用 Christopher Monckton 为其解决方案给出的六条线索,他的解决方案仍未公布。

图 1. Meteor 拼图的一个解决方案这样一个解决方案看起来好象很简单,在计算机程序中实现其实不是个容易的问题。编写那个程序与您能在许多其它关于 Java 性能的文章中找到的人为设计的示例有着根本不同。这使得我们可以说明许多不同的优化技术和组合这些技术的方法。但是,在我们开始优化之前,首先需要开发一种有效的解决方案。
返回列表