专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

java优化3_空间与时间互换相关

Java优化中的时间换空间

  由于系统资源是有限的,为了在有限的资源内,达成某些特定的性能目标,就需要使用时间换空间或者空间换时间的方法。

  时间换空间通常用于嵌入式设备,或者内存、硬盘空间不足的情况。通过使用牺牲CPU的方式,获得原本需要更多内存或者硬盘空间才能完成的工作。

  下例是一个非常简单的时间换空间的算法,实现了a、b两个变量的值交换。交换两个变量最常用的方法是使用一个中间变量,而引入额外的变量意味着要使用更多的空间。采用下面的方法,则可以免去中间变量,而达到变量交换的目的,其代价则是引入了更多的CPU运算。

  aa=a+b;

  b=a-b;

  aa=a-b;

  另一个较为有用的例子是对无符号整数的支持。在Java语言中,不支持无符号整数,这意味着当需要无符号的byte时,需要使用short代替,这也意味着空间的浪费。下例使用位运算模拟无符号byte.虽然在取值和设值过程中,需要更多的CPU运算,但是,却可以大大降低对内存空间的需求。

  注意:性能优化的关键在于掌握各部分组件的性能平衡点。如果系统CPU资源有空闲,但是内存使用紧张,便可以考虑使用时间换空间的策略,达到整体性能的改良。反之,CPU资源紧张,内存资源有空闲,则可以使用空间换时间的策略,提升整体性能。(总之,优化可能是决定一款软件成功与否的关键,节选自《Java程序性能优化–让你的Java程序更快、更稳定》)

Java优化中的空间换时间

  与时间换空间的方法相反,空间换时间则是尝试使用更多的内存或者磁盘空间换取CPU资源或者网络资源等,通过增加系统的内存消耗,来加快程序的运行速度。

  这种方法的典型应用就是缓存。缓存是一块额外的系统内存区,如果没有缓存,程序依然可以正常工作。但是,在一般情况下,缓存中总是保存那些来之不易的数据,重新取得这些数据会花费大量的资源和时间。而通过缓存这块额外的内存,避免了频繁的资源消耗,加快了程序的运行速度。

  空间换时间是一种软件设计思路,除了缓存外,在一些算法中,也可以使用这样的技术。以下代码是典型的空间换时间排序方法:

  public class SpaceSort {

  public static int arrayLen = 1000000;

  public static void main(String[] args) {

  int[] a = new int[arrayLen];

  int[] old = new int[arrayLen];

  Map<Integer, Object> map = new HashMap<Integer, Object>();

  int count = 0;

  while (count < a.length) { //初始化数组数据

  int value = (int) (Math.random() * arrayLen * 10) + 1;

  if (map.get(value) == null) {

  map.put(value, value);

  a[count] = value;

  count++;

  }

  }

  System.arraycopy(a, 0, old, 0, a.length); //这里只是为了保存原有数组

  long start = System.currentTimeMillis();

  Arrays.sort(a);

  System.out.println(”Arrays.sort spend:”+ (System.currentTimeMillis() – start) + ” ms”);

  System.arraycopy(old, 0, a, 0, old.length); //恢复原有数据

  start = System.currentTimeMillis();

  spaceToTime(a);

  System.out.println(”spaceToTime spend:”+ (System.currentTimeMillis()

  - start) + ” ms”);

  }

文章永久链接:https://tech.souyunku.com/30020

未经允许不得转载:搜云库技术团队 » java优化3_空间与时间互换相关

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们