五千年(敝帚自珍)

主题:【评论】Sun发布了最新的Java版本-- 5.0 Tiger版 -- Highway

共:💬18
全看分页树展 · 主题 跟帖
家园 Java 1.5的Boxing/UnBoxing是如何实现的

下面这个例子(源程序和反编译程序)说明了Java 1.5的Boxing/UnBoxing是如何实现的,以这样的方式,它的性能不可能有任何提高。

源程序:

import java.util.*;

public class Freq

{

public static void main(String[] args) {

Map<String, Integer> m = new TreeMap<String, Integer>();

for (String word : args) {

Integer freq = m.get(word);

m.put(word, (freq == null ? 1 : freq + 1));

}

System.out.println(m);

}

}

编译以后,又反编译出的程序:

import java.io.PrintStream;

import java.util.Map;

import java.util.TreeMap;

public class Freq

{

public Freq()

{

}

public static void main(String args[])

{

TreeMap treemap = new TreeMap();

String args1[] = args;

int i = args1.length;

for(int j = 0; j < i; j++)

{

String s = args1[j];

Integer integer = (Integer)treemap.get(s);

treemap.put(s, Integer.valueOf(integer != null ? integer.intValue() + 1 : 1));

}

System.out.println(treemap);

}

}

评论:所谓的Boxing/Unboxing不过是自动做到以前需要手工编码来完成的转换,而没有任何新的东西。这样的进步,确实有可能提高程序员的编程效率,但是绝不可能提高程序的运行性能,因为它没有任何实际的改进。另外,可以注意一下所谓改进的循环是如何实现的,那不过是个简单的展开。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河