Board logo

标题: Java 优化技术(1) [打印本页]

作者: look_w    时间: 2018-10-15 19:29     标题: 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 性能的文章中找到的人为设计的示例有着根本不同。这使得我们可以说明许多不同的优化技术和组合这些技术的方法。但是,在我们开始优化之前,首先需要开发一种有效的解决方案。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0